Any repository that extends atg.repository.RepositoryViewImpl can have access to the base NamedQuery feature. Here is a code sample that indicates how you might create and use a named query with the Query and NamedQuery APIs.
import atg.repository.*;
...
public void sampleQueryTest() {
// Get a hold of your repository somehow
Repository rep = getRepository();
RepositoryItemDescriptor desc = rep.getItemDescriptor("user");
RepositoryView view = desc.getRepositoryView();
QueryBuilder builder = view.getQueryBuilder();
try {
// Create your query
QueryExpression prop = builder.createPropertyQueryExpression("firstName");
QueryExpression constant = builder.createConstantQueryExpression("Adam");
Query query = builder.createComparisonQuery(prop, constant,
QueryBuilder.EQUALS);
//See if we have a NamedQueryView to work with...
if(view instanceof NamedQueryView) {
NamedQueryView nameView = (NamedQueryView)view;
String queryName = "firstNameQuery";
// Create our named query
nameView.createNamedQuery(queryName, query);
// And execute it (normally you wouldn't do this all in the same method
// since the purpose is really to have access to the Query for later)
Query namedQuery = nameView.getNamedQuery(queryName);
RepositoryItem[] results = nameView.executeQuery(namedQuery);
}
}
catch(RepositoryException exc) {
System.out.println(exc.toString())
}
}Note that named queries can also be parameterized. For an example of using parameterized queries in Java code, see Parameterized Query Example.

