From: <one...@us...> - 2003-03-01 06:14:17
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/sql In directory sc8-pr-cvs1:/tmp/cvs-serv8308/sf/hibernate/sql Modified Files: QueryJoinFragment.java QuerySelect.java Log Message: outer join support in HQL Index: QueryJoinFragment.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/sql/QueryJoinFragment.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** QueryJoinFragment.java 23 Feb 2003 07:22:11 -0000 1.1 --- QueryJoinFragment.java 1 Mar 2003 06:14:10 -0000 1.2 *************** *** 2,5 **** --- 2,6 ---- package net.sf.hibernate.sql; + import net.sf.hibernate.dialect.Dialect; import net.sf.hibernate.util.StringHelper; *************** *** 8,17 **** private StringBuffer afterFrom = new StringBuffer(); private StringBuffer afterWhere = new StringBuffer(); public void addJoin(String tableName, String alias, String[] fkColumns, String[] pkColumns, int joinType) { ! ! addCrossJoin(tableName, alias); ! addCondition(alias, fkColumns, pkColumns); ! } --- 9,29 ---- private StringBuffer afterFrom = new StringBuffer(); private StringBuffer afterWhere = new StringBuffer(); + private Dialect dialect; + + public QueryJoinFragment(Dialect dialect) { + this.dialect = dialect; + } public void addJoin(String tableName, String alias, String[] fkColumns, String[] pkColumns, int joinType) { ! if (joinType!=INNER_JOIN) { ! //TODO: get right impl for dialect ! JoinFragment jf = dialect.createOuterJoinFragment(); ! jf.addJoin(tableName, alias, fkColumns, pkColumns, joinType); ! addFragment(jf); ! } ! else { ! addCrossJoin(tableName, alias); ! addCondition(alias, fkColumns, pkColumns); ! } } *************** *** 30,34 **** public JoinFragment copy() { ! QueryJoinFragment copy = new QueryJoinFragment(); copy.afterFrom = new StringBuffer( afterFrom.toString() ); copy.afterWhere = new StringBuffer( afterWhere.toString() ); --- 42,46 ---- public JoinFragment copy() { ! QueryJoinFragment copy = new QueryJoinFragment(dialect); copy.afterFrom = new StringBuffer( afterFrom.toString() ); copy.afterWhere = new StringBuffer( afterWhere.toString() ); Index: QuerySelect.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/sql/QuerySelect.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** QuerySelect.java 28 Feb 2003 07:01:28 -0000 1.1 --- QuerySelect.java 1 Mar 2003 06:14:10 -0000 1.2 *************** *** 4,11 **** import java.util.Iterator; import net.sf.hibernate.util.StringHelper; public class QuerySelect { ! private JoinFragment joins = new QueryJoinFragment(); private StringBuffer select = new StringBuffer(); private StringBuffer where = new StringBuffer(); --- 4,12 ---- import java.util.Iterator; + import net.sf.hibernate.dialect.Dialect; import net.sf.hibernate.util.StringHelper; public class QuerySelect { ! private JoinFragment joins; private StringBuffer select = new StringBuffer(); private StringBuffer where = new StringBuffer(); *************** *** 42,45 **** --- 43,50 ---- dontSpace.add(StringHelper.OPEN_PAREN); //for MySQL dontSpace.add(StringHelper.CLOSE_PAREN); + } + + public QuerySelect(Dialect dialect) { + joins = new QueryJoinFragment(dialect); } |