From: <one...@us...> - 2003-01-24 10:22:09
|
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); |