Update of /cvsroot/hibernate/Hibernate/cirrus/hibernate/loader
In directory sc8-pr-cvs1:/tmp/cvs-serv5218/hibernate/loader
Modified Files:
AnsiOuterJoinGenerator.java EntityLoader.java
OneToManyLoader.java OracleOuterJoinGenerator.java
OuterJoinGenerator.java
Log Message:
improved SQL for <joined-subclass> mappings
Index: AnsiOuterJoinGenerator.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/loader/AnsiOuterJoinGenerator.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** AnsiOuterJoinGenerator.java 25 Nov 2002 02:21:09 -0000 1.5
--- AnsiOuterJoinGenerator.java 25 Nov 2002 07:25:20 -0000 1.6
***************
*** 15,21 ****
}
! public final String appendOuterJoinStringAfterFrom(StringBuffer buf, String tableName, String alias, String[] fkColumns, String[] pkColumns) {
! buf.append(" LEFT OUTER JOIN ")
.append(tableName)
.append(' ')
--- 15,21 ----
}
! public final String appendOuterJoinStringAfterFrom(StringBuffer buf, String tableName, String alias, String[] fkColumns, String[] pkColumns, boolean innerJoin) {
! buf.append( innerJoin ? " INNER JOIN " : " LEFT OUTER JOIN ")
.append(tableName)
.append(' ')
***************
*** 34,38 ****
}
! public final String appendOuterJoinStringAfterWhere(StringBuffer buf, String alias, String[] fkColumns, String[] pkColumns) {
return EMPTY_STRING;
}
--- 34,38 ----
}
! public final String appendOuterJoinStringAfterWhere(StringBuffer buf, String alias, String[] fkColumns, String[] pkColumns, boolean innerJoin) {
return EMPTY_STRING;
}
Index: EntityLoader.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/loader/EntityLoader.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** EntityLoader.java 5 Nov 2002 06:46:06 -0000 1.10
--- EntityLoader.java 25 Nov 2002 07:25:20 -0000 1.11
***************
*** 43,47 ****
selectString( persister, alias, suffixes[joins] ),
// FROM CLAUSE
! persister.fromClauseFragment(alias),
// OUTER JOINS (Insertion Point 1)
outerJoinGenerator.outerJoinStringAfterFrom(associations),
--- 43,47 ----
selectString( persister, alias, suffixes[joins] ),
// FROM CLAUSE
! persister.fromClauseFragment(alias, true),
// OUTER JOINS (Insertion Point 1)
outerJoinGenerator.outerJoinStringAfterFrom(associations),
***************
*** 49,53 ****
whereString( persister.getIdentifierColumnNames(), alias ),
// OUTER JOINS (Insertion Point 2)
! outerJoinGenerator.outerJoinStringAfterWhere(associations)
);
--- 49,54 ----
whereString( persister.getIdentifierColumnNames(), alias ),
// OUTER JOINS (Insertion Point 2)
! outerJoinGenerator.outerJoinStringAfterWhere(associations) +
! persister.outerJoinsAfterWhere(alias, true)
);
Index: OneToManyLoader.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/loader/OneToManyLoader.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** OneToManyLoader.java 5 Nov 2002 06:46:06 -0000 1.11
--- OneToManyLoader.java 25 Nov 2002 07:25:20 -0000 1.12
***************
*** 55,59 ****
selectString( persister, alias, suffixes[joins] ),
// FROM CLAUSE
! persister.fromClauseFragment(alias),
// OUTER JOINS (Insertion Point 1)
outerJoinGenerator.outerJoinStringAfterFrom(associations),
--- 55,59 ----
selectString( persister, alias, suffixes[joins] ),
// FROM CLAUSE
! persister.fromClauseFragment(alias, true),
// OUTER JOINS (Insertion Point 1)
outerJoinGenerator.outerJoinStringAfterFrom(associations),
***************
*** 61,65 ****
whereString( collPersister.getKeyColumnNames(), alias ),
// OUTER JOINS (Insertion Point 2)
! outerJoinGenerator.outerJoinStringAfterWhere(associations),
// ORDER BY CLAUSE
collPersister.hasOrdering() ?
--- 61,66 ----
whereString( collPersister.getKeyColumnNames(), alias ),
// OUTER JOINS (Insertion Point 2)
! outerJoinGenerator.outerJoinStringAfterWhere(associations) +
! persister.outerJoinsAfterWhere(alias, true),
// ORDER BY CLAUSE
collPersister.hasOrdering() ?
Index: OracleOuterJoinGenerator.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/loader/OracleOuterJoinGenerator.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** OracleOuterJoinGenerator.java 25 Nov 2002 02:21:09 -0000 1.5
--- OracleOuterJoinGenerator.java 25 Nov 2002 07:25:20 -0000 1.6
***************
*** 13,17 ****
}
! public final String appendOuterJoinStringAfterFrom(StringBuffer buf, String tableName, String alias, String[] fkColumns, String[] pkColumns) {
buf.append(", ")
--- 13,17 ----
}
! public final String appendOuterJoinStringAfterFrom(StringBuffer buf, String tableName, String alias, String[] fkColumns, String[] pkColumns, boolean innerJoin) {
buf.append(", ")
***************
*** 22,26 ****
}
! public final String appendOuterJoinStringAfterWhere(StringBuffer buf, String alias, String[] fkColumns, String[] pkColumns) {
for ( int j=0; j<fkColumns.length; j++) {
--- 22,26 ----
}
! public final String appendOuterJoinStringAfterWhere(StringBuffer buf, String alias, String[] fkColumns, String[] pkColumns, boolean innerJoin) {
for ( int j=0; j<fkColumns.length; j++) {
***************
*** 30,35 ****
.append(alias)
.append('.')
! .append( pkColumns[j] )
! .append("(+)");
}
return buf.toString();
--- 30,35 ----
.append(alias)
.append('.')
! .append( pkColumns[j] );
! if (!innerJoin) buf.append("(+)");
}
return buf.toString();
Index: OuterJoinGenerator.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/loader/OuterJoinGenerator.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** OuterJoinGenerator.java 25 Nov 2002 02:21:09 -0000 1.4
--- OuterJoinGenerator.java 25 Nov 2002 07:25:20 -0000 1.5
***************
*** 26,32 ****
oj.subalias,
oj.foreignKeyColumns,
! oj.subpersister.getIdentifierColumnNames()
);
! buf.append( oj.subpersister.outerJoinsAfterFrom(oj.subalias) );
}
return buf.toString();
--- 26,33 ----
oj.subalias,
oj.foreignKeyColumns,
! oj.subpersister.getIdentifierColumnNames(),
! false
);
! buf.append( oj.subpersister.outerJoinsAfterFrom(oj.subalias, false) );
}
return buf.toString();
***************
*** 46,52 ****
oj.subalias,
oj.foreignKeyColumns,
! oj.subpersister.getIdentifierColumnNames()
);
! buf.append( oj.subpersister.outerJoinsAfterWhere(oj.subalias) );
}
return buf.toString();
--- 47,54 ----
oj.subalias,
oj.foreignKeyColumns,
! oj.subpersister.getIdentifierColumnNames(),
! false
);
! buf.append( oj.subpersister.outerJoinsAfterWhere(oj.subalias, false) );
}
return buf.toString();
***************
*** 57,67 ****
* To be inserted after the FROM clause.
*/
! public abstract String appendOuterJoinStringAfterFrom(StringBuffer buf, String tableName, String alias, String[] fkColumns, String[] pkColumns);
/**
! * Generate a <tt>LEFT OUTER JOIN</tt> clause to the table of the entity class
* To be inserted after the FROM clause.
*/
! public abstract String appendOuterJoinStringAfterWhere(StringBuffer buf, String alias, String[] fkColumns, String[] pkColumns);
}
--- 59,69 ----
* To be inserted after the FROM clause.
*/
! public abstract String appendOuterJoinStringAfterFrom(StringBuffer buf, String tableName, String alias, String[] fkColumns, String[] pkColumns, boolean innerJoin);
/**
! * Generate a <tt>ON</tt> clause to the table of the entity class
* To be inserted after the FROM clause.
*/
! public abstract String appendOuterJoinStringAfterWhere(StringBuffer buf, String alias, String[] fkColumns, String[] pkColumns, boolean innerJoin);
}
|