Update of /cvsroot/hibernate/Hibernate/cirrus/hibernate/query
In directory usw-pr-cvs1:/tmp/cvs-serv4736/hibernate/query
Modified Files:
QueryTranslator.java
Log Message:
queries against mapped classes now pick up *all* subclasses, wether mapped as subclasses or not
fixed a bug when the same classname appeared twice in a query
Index: QueryTranslator.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/query/QueryTranslator.java,v
retrieving revision 1.41
retrieving revision 1.42
diff -C2 -d -r1.41 -r1.42
*** QueryTranslator.java 4 Nov 2002 08:10:52 -0000 1.41
--- QueryTranslator.java 5 Nov 2002 15:24:36 -0000 1.42
***************
*** 260,266 ****
}
else {
! Queryable result = getPersister(typeName);
! if ( result==null ) throw new QueryException( "persistent class not found: " + typeName );
! return result;
}
}
--- 260,269 ----
}
else {
! try {
! return (Queryable) factory.getPersister(typeName);
! }
! catch (MappingException me) {
! throw new QueryException( "persistent class not found: " + typeName );
! }
}
}
***************
*** 789,792 ****
--- 792,796 ----
ArrayList placeholders = new ArrayList();
ArrayList replacements = new ArrayList();
+ int count=0;
boolean check = false;
while ( tokens.hasMoreTokens() ) {
***************
*** 813,818 ****
}
String[] implementors = factory.getImplementors(clazz);
if ( implementors!=null ) {
! placeholders.add(token);
replacements.add(implementors);
}
--- 817,824 ----
}
String[] implementors = factory.getImplementors(clazz);
+ String placeholder = "$clazz" + count + "$";
+ query = StringHelper.replaceOnce(query, token, placeholder);
if ( implementors!=null ) {
! placeholders.add(placeholder);
replacements.add(implementors);
}
|