Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test In directory sc8-pr-cvs1:/tmp/cvs-serv7114/test Modified Files: FooBar.hbm.xml FooBarTest.java MasterDetailTest.java Multi.hbm.xml MultiTableTest.java SubMulti.java Log Message: fixed bugs querying a many-to-one association to a <joined-subclass> Index: FooBar.hbm.xml =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/FooBar.hbm.xml,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** FooBar.hbm.xml 10 Apr 2003 09:49:17 -0000 1.14 --- FooBar.hbm.xml 3 May 2003 07:06:26 -0000 1.15 *************** *** 13,17 **** dynamic-update="true"> ! <jcs-cache usage="read-write"/> <id name="key" type="string"> --- 13,17 ---- dynamic-update="true"> ! <jcs-cache usage="nonstrict-read-write"/> <id name="key" type="string"> Index: FooBarTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/FooBarTest.java,v retrieving revision 1.60 retrieving revision 1.61 diff -C2 -d -r1.60 -r1.61 *** FooBarTest.java 2 May 2003 09:21:59 -0000 1.60 --- FooBarTest.java 3 May 2003 07:06:26 -0000 1.61 *************** *** 321,325 **** .add( Expression.eq( "integer", f.getInteger() ) ) .add( Expression.like( "string", f.getString() ) ) ! .add( Expression.eq( "boolean", f.getBoolean() ) ) .list(); assertTrue( list.size()==1 && list.get(0)==f ); --- 321,325 ---- .add( Expression.eq( "integer", f.getInteger() ) ) .add( Expression.like( "string", f.getString() ) ) ! .add( Expression.in( "boolean", new Boolean[] { f.getBoolean(), f.getBoolean() } ) ) .list(); assertTrue( list.size()==1 && list.get(0)==f ); Index: MasterDetailTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/MasterDetailTest.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** MasterDetailTest.java 16 Apr 2003 06:20:43 -0000 1.9 --- MasterDetailTest.java 3 May 2003 07:06:26 -0000 1.10 *************** *** 138,141 **** --- 138,147 ---- s = sessions.openSession(); t = s.beginTransaction(); + assertTrue( s.find("select elements(master.details) from Master master").size()==2 ); + t.commit(); + s.close(); + + s = sessions.openSession(); + t = s.beginTransaction(); Detail dd = (Detail) s.load(Detail.class, did); master = dd.getMaster(); Index: Multi.hbm.xml =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/Multi.hbm.xml,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Multi.hbm.xml 2 Apr 2003 13:10:39 -0000 1.9 --- Multi.hbm.xml 3 May 2003 07:06:26 -0000 1.10 *************** *** 38,42 **** <bag name="bag" lazy="true" table="simple_simple"> <key column="simple1"/> ! <many-to-many column="simple2" class="net.sf.hibernate.test.Simple" not-null="true"/> </bag> <one-to-one name="mypo"/> --- 38,42 ---- <bag name="bag" lazy="true" table="simple_simple"> <key column="simple1"/> ! <many-to-many column="simple2" class="net.sf.hibernate.test.Simple"/> </bag> <one-to-one name="mypo"/> *************** *** 62,65 **** --- 62,70 ---- </bag> <many-to-one name="parent"/> + <list name="moreChildren" lazy="true"> + <key column="another_parent"/> + <index column="list_ind"/> + <one-to-many class="net.sf.hibernate.test.SubMulti"/> + </list> </joined-subclass> Index: MultiTableTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/MultiTableTest.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** MultiTableTest.java 16 Apr 2003 01:13:28 -0000 1.14 --- MultiTableTest.java 3 May 2003 07:06:26 -0000 1.15 *************** *** 25,28 **** --- 25,29 ---- public void testJoins() throws Exception { Session s = sessions.openSession(); + s.find("from SubMulti sm join sm.children smc where smc.name > 'a'"); s.find("select s, ya from LessSimple s join s.yetanother ya"); s.find("from LessSimple s1 join s1.bag s2"); *************** *** 31,35 **** --- 32,84 ---- s.find("select s, a from LessSimple s left join s.another a"); s.find("from Simple s, LessSimple ls"); + s.find("from LessSimple ls join ls.set s where s.name > 'a'"); + s.find("from Po po join po.list sm where sm.name > 'a'"); + s.close(); + } + + public void testSubclassCollection() throws Exception { + Session s = sessions.openSession(); + SubMulti sm = new SubMulti(); + SubMulti sm1 = new SubMulti(); + SubMulti sm2 = new SubMulti(); + ArrayList list = new ArrayList(); + ArrayList anotherList = new ArrayList(); + sm.setChildren(list); + sm.setMoreChildren(anotherList); + list.add(sm1); + list.add(sm2); + anotherList.add(sm1); + anotherList.add(sm2); + sm1.setParent(sm); + sm2.setParent(sm); + Serializable id = s.save(sm); + s.save(sm1); + s.save(sm2); + s.flush(); + s.connection().commit(); + s.close(); + + s = sessions.openSession(); + assertTrue( s.find("select s from SubMulti as sm join sm.children as s where s.amount>-1 and s.name is null").size()==2 ); + assertTrue( s.find("select elements(sm.children) from SubMulti as sm").size()==2 ); + assertTrue( s.find("select distinct sm from SubMulti as sm join sm.children as s where s.amount>-1 and s.name is null").size()==1 ); + sm = (SubMulti) s.load(SubMulti.class, id); + assertTrue( sm.getChildren().size()==2 ); + assertEquals( + s.filter( sm.getMoreChildren(), "select count(*) where this.amount>-1 and this.name is null" ).iterator().next(), + new Integer(2) + ); + assertSame( + s.iterate("select distinct s from s in class SubMulti where s.moreChildren[1].amount < 1.0").next(), + sm + ); + assertTrue( sm.getMoreChildren().size()==2 ); + s.delete(sm); + Iterator iter = sm.getChildren().iterator(); + while ( iter.hasNext() ) s.delete( iter.next() ); + s.flush(); + s.connection().commit(); s.close(); + } *************** *** 49,53 **** s.delete(m); t.commit(); ! s.close(); } --- 98,102 ---- s.delete(m); t.commit(); ! s.close(); } *************** *** 221,225 **** s.find("from ls in class LessSimple, s in ls.bag.elements where s.id is not null"); s.find("from ls in class LessSimple, s in ls.set.elements where s.id is not null"); ! s.find("from sm in class SubMulti where exists sm.children.elements"); t.commit(); --- 270,274 ---- s.find("from ls in class LessSimple, s in ls.bag.elements where s.id is not null"); s.find("from ls in class LessSimple, s in ls.set.elements where s.id is not null"); ! s.find("from sm in class SubMulti where exists sm.children.elements"); t.commit(); *************** *** 573,581 **** } } - - - - - - - --- 622,623 ---- Index: SubMulti.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/SubMulti.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** SubMulti.java 5 Jan 2003 02:11:23 -0000 1.3 --- SubMulti.java 3 May 2003 07:06:27 -0000 1.4 *************** *** 8,11 **** --- 8,12 ---- private SubMulti parent; private List children; + private List moreChildren; /** * Returns the amount. *************** *** 56,59 **** --- 57,76 ---- } + /** + * Returns the moreChildren. + * @return List + */ + public List getMoreChildren() { + return moreChildren; + } + + /** + * Sets the moreChildren. + * @param moreChildren The moreChildren to set + */ + public void setMoreChildren(List moreChildren) { + this.moreChildren = moreChildren; + } + } |