From: <one...@us...> - 2002-11-25 02:21:13
|
Update of /cvsroot/hibernate/Hibernate/cirrus/hibernate/persister In directory sc8-pr-cvs1:/tmp/cvs-serv25122/cirrus/hibernate/persister Modified Files: EntityPersister.java Loadable.java MultiTableEntityPersister.java Log Message: use OuterJoinGenerator for normalized table mappings Index: EntityPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/persister/EntityPersister.java,v retrieving revision 1.39 retrieving revision 1.40 diff -C2 -d -r1.39 -r1.40 *** EntityPersister.java 24 Nov 2002 15:45:50 -0000 1.39 --- EntityPersister.java 25 Nov 2002 02:21:09 -0000 1.40 *************** *** 964,969 **** } ! public String fromClauseFragment(String name, String on) { ! return fromClauseFragment(name) + ' ' + on; } --- 964,973 ---- } ! public String outerJoinsAfterFrom(String name) { ! return ""; ! } ! ! public String outerJoinsAfterWhere(String name) { ! return ""; } Index: Loadable.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/persister/Loadable.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Loadable.java 5 Nov 2002 03:44:01 -0000 1.11 --- Loadable.java 25 Nov 2002 02:21:10 -0000 1.12 *************** *** 97,103 **** public String fromClauseFragment(String name); /** ! * Get the from clause fragment, given a query alias and an ON clause */ ! public String fromClauseFragment(String name, String on); } --- 97,107 ---- public String fromClauseFragment(String name); /** ! * Get any the outer join SQL fragments that appear in the <tt>FROM</tt> clause */ ! public String outerJoinsAfterFrom(String name); ! /** ! * Get any the outer join SQL fragments that appear in the <tt>WHERE</tt> clause ! */ ! public String outerJoinsAfterWhere(String name); } Index: MultiTableEntityPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/persister/MultiTableEntityPersister.java,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** MultiTableEntityPersister.java 24 Nov 2002 15:45:50 -0000 1.34 --- MultiTableEntityPersister.java 25 Nov 2002 02:21:10 -0000 1.35 *************** *** 8,11 **** --- 8,12 ---- import cirrus.hibernate.id.NativeGenerator; import cirrus.hibernate.loader.EntityLoader; + import cirrus.hibernate.loader.OuterJoinGenerator; import cirrus.hibernate.loader.UniqueEntityLoader; import cirrus.hibernate.map.Column; *************** *** 1173,1205 **** public String fromClauseFragment(String name) { - return fromClauseFragment(name, ""); - } - - public String fromClauseFragment(String name, String on) { - String[] tables = subclassTableNameClosure; StringBuffer buf = new StringBuffer(100); ! buf.append( tables[0] ) .append(' ') .append(name) ! .append(' ') ! .append(on); ! for ( int i=1; i<tables.length; i++ ) { ! buf.append(" left outer join ") ! .append( tables[i] ) ! .append(' ') ! .append(name) ! .append(i) ! .append(" on "); ! for ( int j=0; j<identifierColumnNames.length; j++ ) { ! buf.append(name) ! .append('.') ! .append( identifierColumnNames[j] ) ! .append('=') ! .append(name) ! .append(i) ! .append('.') ! .append( subclassTableKeyColumns[i][j] ); ! if (j!=identifierColumnNames.length-1) buf.append(" and "); ! } } return buf.toString(); --- 1174,1210 ---- public String fromClauseFragment(String name) { StringBuffer buf = new StringBuffer(100); ! buf.append( subclassTableNameClosure[0] ) .append(' ') .append(name) ! .append( outerJoinsAfterFrom(name) ); ! return buf.toString(); ! } ! ! public String outerJoinsAfterFrom(String name) { ! StringBuffer buf = new StringBuffer(20); ! OuterJoinGenerator ojg = factory.getDialect().getOuterJoinGenerator(); ! for ( int i=1; i<subclassTableNameClosure.length; i++ ) { ! ojg.appendOuterJoinStringAfterFrom( ! buf, ! subclassTableNameClosure[i], ! name+i, ! StringHelper.prefix(identifierColumnNames, name + '.'), ! subclassTableKeyColumns[i] ! ); ! } ! return buf.toString(); ! } ! ! public String outerJoinsAfterWhere(String name) { ! StringBuffer buf = new StringBuffer(20); ! OuterJoinGenerator ojg = factory.getDialect().getOuterJoinGenerator(); ! for ( int i=1; i<subclassTableNameClosure.length; i++ ) { ! ojg.appendOuterJoinStringAfterWhere( ! buf, ! name+i, ! StringHelper.prefix(identifierColumnNames, name + '.'), ! subclassTableKeyColumns[i] ! ); } return buf.toString(); |