Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql
In directory sc8-pr-cvs1:/tmp/cvs-serv28888/sf/hibernate/hql
Modified Files:
QueryTranslator.java
Log Message:
fixed a problem with outerjoin fetching from queries with oracle-style syntax
Index: QueryTranslator.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/QueryTranslator.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** QueryTranslator.java 20 Jan 2003 12:48:10 -0000 1.8
--- QueryTranslator.java 24 Jan 2003 10:21:34 -0000 1.9
***************
*** 452,457 ****
int joins=associations.size();
String[] ojsuffixes = new String[joins];
- ojl.setSuffixed(ojsuffixes);
for ( int i=0; i<joins; i++ ) ojsuffixes[i] = Integer.toString(i) + StringHelper.UNDERSCORE;
selectProperties = persister.propertySelectClauseFragment(name, StringHelper.EMPTY_STRING);
selectIdentifiers = persister.identifierSelectClauseFragment(name, StringHelper.EMPTY_STRING);
--- 452,457 ----
int joins=associations.size();
String[] ojsuffixes = new String[joins];
for ( int i=0; i<joins; i++ ) ojsuffixes[i] = Integer.toString(i) + StringHelper.UNDERSCORE;
+ ojl.setSuffixes(ojsuffixes);
selectProperties = persister.propertySelectClauseFragment(name, StringHelper.EMPTY_STRING);
selectIdentifiers = persister.identifierSelectClauseFragment(name, StringHelper.EMPTY_STRING);
***************
*** 664,668 ****
Iterator iter = typeMap.keySet().iterator();
StringBuffer inClassWheres = new StringBuffer(50);
! boolean first = true;
while ( iter.hasNext() ) {
--- 664,671 ----
Iterator iter = typeMap.keySet().iterator();
StringBuffer inClassWheres = new StringBuffer(50);
!
! // add any outerjoins required for fetching associations
! if (outerjoin!=null) inClassWheres.append( outerjoin.toWhereFragmentString() );
!
while ( iter.hasNext() ) {
***************
*** 672,683 ****
//render the " and foo.class in ( 'Foo', 'Bar' ) " bit
! String where = p.getQueryWhereClause( name, returnTypes.contains(name) && !isShallowQuery() );
! if ( where!=null ) {
! if (!first) inClassWheres.append(" AND ");
! first=false;
! inClassWheres.append(where);
! }
!
}
StringBuffer buf = new StringBuffer(120);
--- 675,685 ----
//render the " and foo.class in ( 'Foo', 'Bar' ) " bit
! String where = p.queryWhereFragment( name, returnTypes.contains(name) && !isShallowQuery() );
! if ( where!=null ) inClassWheres.append(where);
}
+
+ //if ( inClassWheres.toString().toLowerCase().startsWith(" and ") ) {
+ inClassWheres.delete(0, 5); //remove the leading " and "
+ //}
StringBuffer buf = new StringBuffer(120);
|