public boolean visitFromItem(EJBQLFromItem expression, int finishedChildIndex) {
if (finishedChildIndex + 1 == expression.getChildrenCount()) {
// resolve class descriptor
ClassDescriptor descriptor = resolver.getClassDescriptor(entityName);
if (descriptor == null) {
throw new EJBQLException("Unmapped abstract schema name: "
+ entityName);
}
// per JPA spec, 4.4.2, "Identification variables are case insensitive."
String id = normalizeIdPath(expression.getId());
ClassDescriptor old = descriptorsById.put(id, descriptor);
if (old != null && old != descriptor) {
throw new EJBQLException(
"Duplicate identification variable definition: "
+ id
+ ", it is already used for "
+ old.getEntity().getName());
}
// if root wasn't detected in the Select Clause, use the first id var as
// root
if (Compiler.this.rootId == null) {