You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(22) |
Nov
(308) |
Dec
(131) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(369) |
Feb
(171) |
Mar
(236) |
Apr
(187) |
May
(218) |
Jun
(217) |
Jul
(127) |
Aug
(448) |
Sep
(270) |
Oct
(231) |
Nov
(422) |
Dec
(255) |
2004 |
Jan
(111) |
Feb
(73) |
Mar
(338) |
Apr
(351) |
May
(349) |
Jun
(495) |
Jul
(394) |
Aug
(1048) |
Sep
(499) |
Oct
(142) |
Nov
(269) |
Dec
(638) |
2005 |
Jan
(825) |
Feb
(1272) |
Mar
(593) |
Apr
(690) |
May
(950) |
Jun
(958) |
Jul
(767) |
Aug
(839) |
Sep
(525) |
Oct
(449) |
Nov
(585) |
Dec
(455) |
2006 |
Jan
(603) |
Feb
(656) |
Mar
(195) |
Apr
(114) |
May
(136) |
Jun
(100) |
Jul
(128) |
Aug
(68) |
Sep
(7) |
Oct
(1) |
Nov
(1) |
Dec
(8) |
2007 |
Jan
(4) |
Feb
(3) |
Mar
(8) |
Apr
(16) |
May
(5) |
Jun
(4) |
Jul
(6) |
Aug
(23) |
Sep
(15) |
Oct
(5) |
Nov
(7) |
Dec
(5) |
2008 |
Jan
(5) |
Feb
(1) |
Mar
(1) |
Apr
(5) |
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2012 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(3) |
Dec
(2) |
2013 |
Jan
(1) |
Feb
|
Mar
(2) |
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(2) |
Jun
(1) |
Jul
|
Aug
(1) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <tu...@us...> - 2003-03-02 13:59:03
|
Update of /cvsroot/hibernate/Hibernate2/doc/reference/src In directory sc8-pr-cvs1:/tmp/cvs-serv23405/doc/reference/src Modified Files: index.xml Log Message: Version Update for Release Index: index.xml =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/doc/reference/src/index.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** index.xml 23 Feb 2003 13:53:24 -0000 1.3 --- index.xml 2 Mar 2003 13:59:01 -0000 1.4 *************** *** 21,25 **** <title>HIBERNATE - Relational Persistence for Idiomatic Java</title> <subtitle>Reference Documentation</subtitle> ! <releaseinfo>2.0 beta2</releaseinfo> </bookinfo> --- 21,25 ---- <title>HIBERNATE - Relational Persistence for Idiomatic Java</title> <subtitle>Reference Documentation</subtitle> ! <releaseinfo>2.0 beta4</releaseinfo> </bookinfo> |
From: <one...@us...> - 2003-03-02 13:03:17
|
Update of /cvsroot/hibernate/Hibernate2/doc/reference/src In directory sc8-pr-cvs1:/tmp/cvs-serv7909 Modified Files: query_language.xml Log Message: documented latest QL changes Index: query_language.xml =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/doc/reference/src/query_language.xml,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** query_language.xml 1 Mar 2003 13:02:19 -0000 1.4 --- query_language.xml 2 Mar 2003 13:03:15 -0000 1.5 *************** *** 13,18 **** <literal>net.sf.hibernate.eg.FOO</literal> is not <literal>net.sf.hibernate.eg.Foo</literal> and ! <literal>foo.Bar</literal> is not ! <literal>foo.BAR</literal>. </para> </sect1> --- 13,18 ---- <literal>net.sf.hibernate.eg.FOO</literal> is not <literal>net.sf.hibernate.eg.Foo</literal> and ! <literal>foo.barSet</literal> is not ! <literal>foo.BARSET</literal>. </para> </sect1> *************** *** 26,48 **** </para> ! <programlisting><![CDATA[from cat in class eg.Cat]]></programlisting> <para> which simply returns all instances of the class <literal>eg.Cat</literal>. The query assigns the alias <literal>cat</literal> to <literal>Cat</literal> ! instances, so we could use that alias later in the query. </para> </sect1> <sect1 id="query-language-s3"> <title>The select clause</title> <para> ! A multipart <literal>from</literal> clause is possible. The <literal>select</literal> ! clause picks which classes to return in the result set. Consider: </para> ! <programlisting><![CDATA[select mate from cat in class eg.Cat, mate in class eg.Cat ! where mate = cat.mate]]></programlisting> <para> --- 26,112 ---- </para> ! <programlisting><![CDATA[from eg.Cat as cat]]></programlisting> <para> which simply returns all instances of the class <literal>eg.Cat</literal>. The query assigns the alias <literal>cat</literal> to <literal>Cat</literal> ! instances, so we could use that alias later in the query. The <literal>as</literal> ! keyword is optional; we could also write: </para> + + <programlisting><![CDATA[from eg.Cat cat]]></programlisting> + + <para> + Multiple classes may appear, resulting in a cartesian product or "cross" join. + </para> + + <programlisting><![CDATA[from Formula as form, Parameter as param]]></programlisting> + </sect1> <sect1 id="query-language-s3"> + <title>Associations and joins</title> + + <para> + We may also define aliases to associated entities using a <literal>join</literal>. + </para> + + <programlisting><![CDATA[from eg.Cat as cat + inner join cat.mate as mate + left outer join cat.kittens as kitten + + from eg.Cat as cat left join cat.mate.kittens as kittens + + from Formula form full join form.parameter param]]></programlisting> + + <para> + The supported join types are borrowed from ANSI SQL + </para> + + <itemizedlist spacing="compact"> + <listitem> + <para> + <literal>inner join</literal> + </para> + </listitem> + <listitem> + <para> + <literal>left outer join</literal> + </para> + </listitem> + <listitem> + <para> + <literal>right outer join</literal> (not recommended) + </para> + </listitem> + <listitem> + <para> + <literal>full join</literal> (not usually useful) + </para> + </listitem> + </itemizedlist> + + <para> + The <literal>inner join</literal>, <literal>left outer join</literal> and + <literal>right outer join</literal> constructs may be abbreviated. + </para> + + <programlisting><![CDATA[from eg.Cat as cat + join cat.mate as mate + left join cat.kittens as kitten]]></programlisting> + + </sect1> + + <sect1 id="query-language-s4"> <title>The select clause</title> <para> ! The <literal>select</literal> clause picks which objects and properties to return in ! the query result set. Consider: </para> ! <programlisting><![CDATA[select mate ! from eg.Cat cat ! inner join cat.mate cat]]></programlisting> <para> *************** *** 51,55 **** </para> ! <programlisting><![CDATA[select cat.mate from cat in class eg.Cat]]></programlisting> <para> --- 115,119 ---- </para> ! <programlisting><![CDATA[select cat.mate from eg.Cat cat]]></programlisting> <para> *************** *** 58,62 **** </para> ! <programlisting><![CDATA[select elements(cat.kittens) from cat in class eg.Cat]]></programlisting> <para> --- 122,126 ---- </para> ! <programlisting><![CDATA[select elements(cat.kittens) from eg.Cat cat]]></programlisting> <para> *************** *** 64,90 **** </para> ! <programlisting><![CDATA[select cat.name from cat in class eg.DomesticCat where cat.name like 'fri%' ! select cust.name.firstName from cust in class Customer]]></programlisting> <para> ! You may select multiple objects (Hibernate will return them in an array of type ! <literal>Object[]</literal>) </para> ! <programlisting><![CDATA[select mother, offspr ! from mother in class eg.DomesticCat, offspr in class eg.Cat ! where offspr in elements(mother.kittens)]]></programlisting> <para> ! Queryies may even return aggregate functions of properties. Collections may also appear ! inside aggregate functions in the <literal>select</literal> clause. </para> <programlisting><![CDATA[select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat) ! from cat in class eg.Cat ! select cat, count( elements(cat.kittens) ) from cat in class eg.Cat group by cat]]></programlisting> <para> --- 128,177 ---- </para> ! <programlisting><![CDATA[select cat.name from eg.DomesticCat cat where cat.name like 'fri%' ! select cust.name.firstName from Customer as cust]]></programlisting> <para> ! Queries may return multiple objects and/or properties as an array of type ! <literal>Object[]</literal> </para> ! <programlisting><![CDATA[select cat, offspr, mate.name ! from eg.DomesticCat as mother ! inner join mother.mate as mate ! left outer join mother.kittens as offspr]]></programlisting> ! ! <para> ! or as an actual typesafe Java object ! </para> ! ! <programlisting><![CDATA[select new Family(cat, mate, offspr) ! from eg.DomesticCat as mother ! join mother.mate as mate ! left join mother.kittens as offspr]]></programlisting> ! ! <para> ! assuming that the class <literal>Family</literal> has an appropriate constructor. ! </para> ! ! </sect1> + <sect1 id="query-language-s4a"> + <title>Aggregate functions</title> <para> ! Queryies may even return aggregate functions of properties. </para> <programlisting><![CDATA[select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat) ! from eg.Cat cat></programlisting> ! <para> ! Collections may also appear inside aggregate functions in the <literal>select</literal> ! clause. ! </para> ! ! <programlisting><![CDATA[select cat, count( elements(cat.kittens) ) ! from eg.Cat cat group by cat]]></programlisting> <para> *************** *** 114,140 **** the same semantics as in SQL. </para> ! <programlisting><![CDATA[select distinct cat.name from cat in class eg.Cat]]></programlisting> </sect1> ! <sect1 id="query-language-s3b"> <title>polymorphism</title> <para> A query like: </para> ! <programlisting><![CDATA[from cat in class eg.Cat]]></programlisting> <para> returns instances not only of <literal>Cat</literal>, but also of subclasses like ! <literal>DomesticCat</literal>. Hibernate queries may name <emphasis>any</emphasis> ! Java class or interface in the <literal>from</literal> clause. The query will ! return instances of all persistent classes that extend that class or implement ! the interface. The following query would return all persistent objects: </para> ! <programlisting><![CDATA[from o in class java.lang.Object]]></programlisting> <para> The interface <literal>Named</literal> might be implemented by various persistent classes: </para> ! <programlisting><![CDATA[from n in class eg.Named, m in class eg.Named where n.name = m.name]]></programlisting> <para> Note that these last two queries will require more than one SQL <literal>SELECT</literal>. This --- 201,233 ---- the same semantics as in SQL. </para> ! <programlisting><![CDATA[select distinct cat.name from eg.Cat cat ! ! select count(distinct cat.name), count(cat) from eg.Cat cat]]></programlisting> </sect1> ! <sect1 id="query-language-s4b"> <title>polymorphism</title> <para> A query like: </para> ! <programlisting><![CDATA[from eg.Cat as cat]]></programlisting> <para> returns instances not only of <literal>Cat</literal>, but also of subclasses like ! <literal>DomesticCat</literal>. Hibernate queries may name <emphasis>any</emphasis> Java ! class or interface in the <literal>from</literal> clause. The query will return instances ! of all persistent classes that extend that class or implement the interface. The following ! query would return all persistent objects: </para> ! ! <programlisting><![CDATA[from java.lang.Object o]]></programlisting> ! <para> The interface <literal>Named</literal> might be implemented by various persistent classes: </para> ! ! <programlisting><![CDATA[from eg.Named n, eg.Named m where n.name = m.name]]></programlisting> ! <para> Note that these last two queries will require more than one SQL <literal>SELECT</literal>. This *************** *** 142,173 **** (It also means you can't call these queries using <literal>Query.scroll()</literal>.) </para> </sect1> - <sect1 id="query-language-s4"> - <title>from collections</title> - - <para> - You can select entities (but not values) from a collection - </para> - - <programlisting><![CDATA[select kitten from - cat in class eg.Cat, - kitten in elements(cat.kittens)]]></programlisting> - - <para> - The <literal>elements</literal> function accesses element set of the collection. - </para> - </sect1> - - <sect1 id="query-language-s5"> <title>The where clause</title> <para> ! The <literal>where</literal> clause allows you to narrow the list ! of instances returned. </para> ! <programlisting><![CDATA[from cat in class eg.Cat where cat.name='Fritz']]></programlisting> <para> --- 235,249 ---- (It also means you can't call these queries using <literal>Query.scroll()</literal>.) </para> + </sect1> <sect1 id="query-language-s5"> <title>The where clause</title> <para> ! The <literal>where</literal> clause allows you to narrow the list of instances returned. </para> ! <programlisting><![CDATA[from eg.Cat as cat where cat.name='Fritz']]></programlisting> <para> *************** *** 175,179 **** </para> ! <programlisting><![CDATA[select foo from foo in class eg.Foo, bar in class eg.Bar where foo.startDate = bar.date]]></programlisting> --- 251,255 ---- </para> ! <programlisting><![CDATA[select foo from eg.Foo foo, eg.Bar bar where foo.startDate = bar.date]]></programlisting> *************** *** 187,198 **** </para> ! <programlisting><![CDATA[from cat in class eg.Cat where cat.mate.name is not null]]></programlisting> <para> ! This query translates to an SQL query with a table join. If you were to write something like </para> ! <programlisting><![CDATA[from foo in class eg.Foo where foo.bar.baz.customer.address.city is not null]]></programlisting> --- 263,274 ---- </para> ! <programlisting><![CDATA[from eg.Cat cat where cat.mate.name is not null]]></programlisting> <para> ! This query translates to an SQL query with a table (inner) join. If you were to write something like </para> ! <programlisting><![CDATA[from eg.Foo foo where foo.bar.baz.customer.address.city is not null]]></programlisting> *************** *** 206,212 **** </para> ! <programlisting><![CDATA[from cat in class eg.Cat, rival in class eg.Cat where cat.mate = rival.mate ! select cat, mate from cat in class eg.Cat, mate in class eg.Cat where cat.mate = mate]]></programlisting> --- 282,288 ---- </para> ! <programlisting><![CDATA[from eg.Cat cat, eg.Cat rival where cat.mate = rival.mate ! select cat, mate from eg.Cat cat, eg.Cat mate where cat.mate = mate]]></programlisting> *************** *** 216,222 **** </para> ! <programlisting><![CDATA[from cat in class eg.Cat where cat.id = 123 ! from cat in class eg.Cat where cat.mate.id = 69]]></programlisting> <para> --- 292,298 ---- </para> ! <programlisting><![CDATA[from eg.Cat as cat where cat.id = 123 ! from eg.Cat as cat where cat.mate.id = 69]]></programlisting> <para> *************** *** 230,237 **** </para> ! <programlisting><![CDATA[from person in class bank.Person where person.id.country = 'AU' and person.id.medicareNumber = 123456 ! from account in class bank.Account where account.owner.id.country = 'AU' and account.owner.id.medicareNumber = 123456]]></programlisting> --- 306,313 ---- </para> ! <programlisting><![CDATA[from bank.Person person where person.id.country = 'AU' and person.id.medicareNumber = 123456 ! from bank.Account account where account.owner.id.country = 'AU' and account.owner.id.medicareNumber = 123456]]></programlisting> *************** *** 246,250 **** </para> ! <programlisting><![CDATA[from cat in class eg.Cat where cat.class = eg.DomesticCat]]></programlisting> <para> --- 322,326 ---- </para> ! <programlisting><![CDATA[from eg.Cat cat where cat.class = eg.DomesticCat]]></programlisting> <para> *************** *** 334,340 **** </para> ! <programlisting><![CDATA[from cat in class eg.DomesticCat where cat.name between 'A' and 'B' ! from cat in class eg.DomesticCat where cat.name in ( 'Foo', 'Bar', Baz" )]]></programlisting> <para> --- 410,416 ---- </para> ! <programlisting><![CDATA[from eg.DomesticCat cat where cat.name between 'A' and 'B' ! from eg.DomesticCat cat where cat.name in ( 'Foo', 'Bar', Baz" )]]></programlisting> <para> *************** *** 342,348 **** </para> ! <programlisting><![CDATA[from cat in class eg.DomesticCat where cat.name not between 'A' and 'B' ! from cat in class eg.DomesticCat where cat.name not in ( 'Foo', 'Bar', Baz" )]]></programlisting> <para> --- 418,424 ---- </para> ! <programlisting><![CDATA[from eg.DomesticCat cat where cat.name not between 'A' and 'B' ! from eg.DomesticCat cat where cat.name not in ( 'Foo', 'Bar', Baz" )]]></programlisting> <para> *************** *** 352,359 **** <para> ! You may test the size of a collection with the special property <literal>size</literal> </para> ! <programlisting><![CDATA[from cat in class eg.Cat where cat.kittens.size > 0]]></programlisting> <para> --- 428,438 ---- <para> ! You may test the size of a collection with the special property <literal>size</literal>, or ! the special <literal>size()</literal> function. </para> ! <programlisting><![CDATA[from eg.Cat cat where cat.kittens.size > 0 ! ! from eg.Cat cat where size(cat.kittens) > 0]]></programlisting> <para> *************** *** 364,368 **** </para> ! <programlisting><![CDATA[from cal in class Calendar where cal.holidays.maxElement > current date]]></programlisting> <para> --- 443,447 ---- </para> ! <programlisting><![CDATA[from Calendar cal where cal.holidays.maxElement > current date]]></programlisting> <para> *************** *** 370,376 **** </para> ! <programlisting><![CDATA[from order in class Order where maxindex(order.items) > 100 ! from order in class Order where size(order.items) > 100]]></programlisting> <para> --- 449,455 ---- </para> ! <programlisting><![CDATA[from Order order where maxindex(order.items) > 100 ! from Order order where minelement(order.items) > 10000]]></programlisting> <para> *************** *** 380,395 **** </para> ! <programlisting><![CDATA[select mother from mother in class eg.Cat, kit in class eg.Cat where kit in elements(foo.kittens) ! select p from list in class eg.NameList, p in class eg.Person where p.name = some elements(list.names) ! from cat in class eg.Cat where exists elements(cat.kittens) ! from p in class eg.Player where 3 > all elements(p.scores) ! from show in class eg.Show ! where 'fizard' in indices(show.acts)]]></programlisting> <para> --- 459,473 ---- </para> ! <programlisting><![CDATA[select mother from eg.Cat as mother, eg.Cat as kit where kit in elements(foo.kittens) ! select p from eg.NameList list, eg.Person p where p.name = some elements(list.names) ! from eg.Cat cat where exists elements(cat.kittens) ! from eg.Player p where 3 > all elements(p.scores) ! from eg.Show show where 'fizard' in indices(show.acts)]]></programlisting> <para> *************** *** 406,415 **** </para> </listitem> ! <listitem> <para> in a <literal>from</literal> clause: only <literal>elements</literal> makes sense ... and only for a collection of entities </para> ! </listitem> <listitem> <para> --- 484,493 ---- </para> </listitem> ! <!--<listitem> <para> in a <literal>from</literal> clause: only <literal>elements</literal> makes sense ... and only for a collection of entities </para> ! </listitem>--> <listitem> <para> *************** *** 424,437 **** </para> ! <programlisting><![CDATA[from order in class Order where order.items[0].id = 1234 ! select person from person in class Person, calendar in class Calendar where calendar.holidays['national day'] = person.birthDay and person.nationality.calendar = calendar ! select item from item in class Item, order in class Order where order.items[ order.deliveredItemIndices[0] ] = item and order.id = 11 ! select item from item in class Item, order in class Order where order.items[ maxindex(order.items) ] = item and order.id = 11]]></programlisting> --- 502,515 ---- </para> ! <programlisting><![CDATA[from Order order where order.items[0].id = 1234 ! select person from Person person, Calendar calendar where calendar.holidays['national day'] = person.birthDay and person.nationality.calendar = calendar ! select item from Item item, Order order where order.items[ order.deliveredItemIndices[0] ] = item and order.id = 11 ! select item from Item item, Order order where order.items[ maxindex(order.items) ] = item and order.id = 11]]></programlisting> *************** *** 440,444 **** </para> ! <programlisting><![CDATA[select item from item in class Item, order in class Order where order.items[ size(order.items) - 1 ] = item]]></programlisting> --- 518,522 ---- </para> ! <programlisting><![CDATA[select item from Item item, Order order where order.items[ size(order.items) - 1 ] = item]]></programlisting> *************** *** 447,451 **** </para> ! <programlisting><![CDATA[from cat in class eg.DomesticCat where upper(cat.name) like 'FRI%']]></programlisting> <para> --- 525,529 ---- </para> ! <programlisting><![CDATA[from eg.DomesticCat cat where upper(cat.name) like 'FRI%']]></programlisting> <para> *************** *** 455,461 **** <programlisting><![CDATA[select cust ! from prod in class Product, ! store in class Store, ! cust in store.customers where prod.name = 'widget' and store.location.name in ( 'Melbourne', 'Sydney' ) --- 533,539 ---- <programlisting><![CDATA[select cust ! from Product prod, ! Store store ! inner join store.customers cust where prod.name = 'widget' and store.location.name in ( 'Melbourne', 'Sydney' ) *************** *** 494,498 **** </para> ! <programlisting><![CDATA[from cat in class eg.DomesticCat order by cat.name asc, cat.weight desc, cat.birthdate]]></programlisting> --- 572,576 ---- </para> ! <programlisting><![CDATA[from eg.DomesticCat cat order by cat.name asc, cat.weight desc, cat.birthdate]]></programlisting> *************** *** 511,518 **** </para> ! <programlisting><![CDATA[select cat.color, sum(cat.weight), count(cat) from cat in class eg.Cat group by cat.color ! select foo.id, avg( elements(foo.names) ), max( indices(foo.names) ) from foo in class eg.Foo group by foo.id]]></programlisting> --- 589,596 ---- </para> ! <programlisting><![CDATA[select cat.color, sum(cat.weight), count(cat) from eg.Cat cat group by cat.color ! select foo.id, avg( elements(foo.names) ), max( indices(foo.names) ) from eg.Foo foo group by foo.id]]></programlisting> *************** *** 522,526 **** <para>A <literal>having</literal> clause is also allowed.</para> ! <programlisting><![CDATA[select cat.color, sum(cat.weight), count(cat) from foo in class eg.Foo group by cat.color having cat.color in (eg.Color.TABBY, eg.Color.BLACK)]]></programlisting> --- 600,604 ---- <para>A <literal>having</literal> clause is also allowed.</para> ! <programlisting><![CDATA[select cat.color, sum(cat.weight), count(cat) from eg.Cat cat group by cat.color having cat.color in (eg.Color.TABBY, eg.Color.BLACK)]]></programlisting> *************** *** 536,547 **** </para> ! <programlisting><![CDATA[from fatcat in class eg.Cat where fatcat.weight > ! ( select avg(cat.weight) from cat in class eg.DomesticCat ) ! from cat in class eg.DomesticCat where cat.name = ! some( select list.name from list in class eg.NameList ) ! from cat in class eg.Cat where not exists ! ( from mate in class eg.Cat where mate.mate = cat )]]></programlisting> </sect1> --- 614,625 ---- </para> ! <programlisting><![CDATA[from eg.Cat fatcat where fatcat.weight > ! ( select avg(cat.weight) from eg.DomesticCat cat ) ! from eg.DomesticCat cat where cat.name = ! some( select list.name from eg.NameList list ) ! from eg.Cat cat where not exists ! ( from eg.Cat mate where mate.mate = cat )]]></programlisting> </sect1> |
From: <one...@us...> - 2003-03-02 12:58:55
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test In directory sc8-pr-cvs1:/tmp/cvs-serv6342/hibernate/test Modified Files: DemoTest.java FooBarTest.java Log Message: minor adjustments to new QL syntax Index: DemoTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/DemoTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** DemoTest.java 5 Jan 2003 02:11:23 -0000 1.3 --- DemoTest.java 2 Mar 2003 12:58:52 -0000 1.4 *************** *** 25,29 **** t.start(); ! Thread.sleep(2000); NetworkDemo.command("setup"); --- 25,29 ---- t.start(); ! Thread.sleep(3000); NetworkDemo.command("setup"); Index: FooBarTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/FooBarTest.java,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** FooBarTest.java 2 Mar 2003 09:02:40 -0000 1.34 --- FooBarTest.java 2 Mar 2003 12:58:52 -0000 1.35 *************** *** 308,313 **** s.find("SELECT baz.name FROM Bar AS bar INNER JOIN bar.baz AS baz INNER JOIN baz.fooSet AS foo WHERE baz.name = bar.string"); ! //s.find("select baz.name from Bar bar, bar.baz baz, baz.fooSet foo where baz.name = bar.string"); ! //s.find("SELECT baz.name FROM Bar AS bar, bar.baz AS baz, baz.fooSet AS foo WHERE baz.name = bar.string"); s.find("select baz.name from Bar bar left join bar.baz baz left join baz.fooSet foo where baz.name = bar.string"); --- 308,315 ---- s.find("SELECT baz.name FROM Bar AS bar INNER JOIN bar.baz AS baz INNER JOIN baz.fooSet AS foo WHERE baz.name = bar.string"); ! s.find("select baz.name from Bar bar join bar.baz baz left outer join baz.fooSet foo where baz.name = bar.string"); ! ! s.find("select baz.name from Bar bar, bar.baz baz, baz.fooSet foo where baz.name = bar.string"); ! s.find("SELECT baz.name FROM Bar AS bar, bar.baz AS baz, baz.fooSet AS foo WHERE baz.name = bar.string"); s.find("select baz.name from Bar bar left join bar.baz baz left join baz.fooSet foo where baz.name = bar.string"); *************** *** 321,327 **** s.find("select foo from bar in class Bar inner join bar.baz.fooSet as foo"); ! //s.find("select bar.string, foo.string from bar in class Bar, bar.baz as baz, elements(baz.fooSet) as foo where baz.name = 'name'"); ! //s.find("select foo from bar in class Bar, bar.baz as baz, baz.fooSet as foo"); ! //s.find("select foo from bar in class Bar, bar.baz.fooSet as foo"); assertTrue( s.find("from bar in class Bar, foo in bar.baz.fooSet.elements").size()==0 ); --- 323,329 ---- s.find("select foo from bar in class Bar inner join bar.baz.fooSet as foo"); ! s.find("select bar.string, foo.string from bar in class Bar, bar.baz as baz, elements(baz.fooSet) as foo where baz.name = 'name'"); ! s.find("select foo from bar in class Bar, bar.baz as baz, baz.fooSet as foo"); ! s.find("select foo from bar in class Bar, bar.baz.fooSet as foo"); assertTrue( s.find("from bar in class Bar, foo in bar.baz.fooSet.elements").size()==0 ); |
From: <one...@us...> - 2003-03-02 12:58:55
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql In directory sc8-pr-cvs1:/tmp/cvs-serv6342/hibernate/hql Modified Files: FromParser.java Log Message: minor adjustments to new QL syntax Index: FromParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/FromParser.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** FromParser.java 1 Mar 2003 06:14:10 -0000 1.9 --- FromParser.java 2 Mar 2003 12:58:52 -0000 1.10 *************** *** 49,54 **** } else if ( lcToken.equals("join") ) { ! if (!afterJoinType) throw new QueryException("unexpected token: join"); ! afterJoinType = false; } else if ( joinTypes.containsKey(lcToken) ) { --- 49,67 ---- } else if ( lcToken.equals("join") ) { ! if (!afterJoinType) { ! if (!expectingJoin) throw new QueryException("unexpected token: join"); ! // inner joins can be abbreviated to 'join' ! joinType = JoinFragment.INNER_JOIN; ! expectingJoin = false; ! } ! else { ! afterJoinType = false; ! } ! } ! else if ( lcToken.equals("outer") ) { ! // 'outer' is optional and is ignored ! if ( !afterJoinType || ! (joinType!=JoinFragment.LEFT_OUTER_JOIN && joinType!=JoinFragment.RIGHT_OUTER_JOIN) ! ) throw new QueryException("unexpected token: outer"); } else if ( joinTypes.containsKey(lcToken) ) { *************** *** 157,162 **** // starts with a path expression (new style) ! if (joinType==NONE) throw new QueryException("path expression must be preceded by full, left, right or inner join"); ! /*if (joinType!=NONE) */peParser.setJoinType(joinType); ParserHelper.parse(peParser, q.unalias(token), ParserHelper.PATH_SEPARATORS, q); --- 170,178 ---- // starts with a path expression (new style) ! // force HQL style: from Person p inner join p.cars c ! //if (joinType==NONE) throw new QueryException("path expression must be preceded by full, left, right or inner join"); ! ! //allow ODMG OQL style: from Person p, p.cars c ! if (joinType!=NONE) peParser.setJoinType(joinType); ParserHelper.parse(peParser, q.unalias(token), ParserHelper.PATH_SEPARATORS, q); |
From: <one...@us...> - 2003-03-02 09:02:43
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test In directory sc8-pr-cvs1:/tmp/cvs-serv12255/hibernate/test Modified Files: FooBarTest.java Log Message: fixed some bugs with setParameterList() Index: FooBarTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/FooBarTest.java,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** FooBarTest.java 2 Mar 2003 06:58:54 -0000 1.33 --- FooBarTest.java 2 Mar 2003 09:02:40 -0000 1.34 *************** *** 72,75 **** --- 72,86 ---- List list = q.list(); assertTrue( list.size()==2 ); + + q = s.createQuery("select bar, b from Bar bar left join bar.baz baz left join baz.cascadingBars b where ( bar.name in (:nameList) or bar.name in (:nameList) ) and bar.string = :stringVal"); + HashSet nameList = new HashSet(); + nameList.add("bar"); + nameList.add("Bar"); + nameList.add("Bar Two"); + q.setParameterList("nameList", nameList); + q.setParameter("stringVal", "a string"); + list = q.list(); + assertTrue( list.size()==2 ); + q = s.createQuery("select bar, b from Bar bar inner join bar.baz baz inner join baz.cascadingBars b where bar.name like 'Bar%'"); list = q.list(); |
From: <one...@us...> - 2003-03-02 09:02:43
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl In directory sc8-pr-cvs1:/tmp/cvs-serv12255/hibernate/impl Modified Files: QueryImpl.java Log Message: fixed some bugs with setParameterList() Index: QueryImpl.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/impl/QueryImpl.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** QueryImpl.java 20 Jan 2003 12:48:11 -0000 1.7 --- QueryImpl.java 2 Mar 2003 09:02:39 -0000 1.8 *************** *** 37,41 **** private ArrayList values = new ArrayList(4); private ArrayList types = new ArrayList(4); ! private Map namedParams = new HashMap(4); public QueryImpl(String queryString, SessionImplementor session) { --- 37,42 ---- private ArrayList values = new ArrayList(4); private ArrayList types = new ArrayList(4); ! private Map namedParameters = new HashMap(4); ! private Map namedParameterLists = new HashMap(4); public QueryImpl(String queryString, SessionImplementor session) { *************** *** 48,60 **** public Iterator iterate() throws HibernateException { ! return session.iterate(queryString, values.toArray(), (Type[]) types.toArray(NO_TYPES), selection, namedParams); } public ScrollableResults scroll() throws HibernateException { ! return session.scroll(queryString, values.toArray(), (Type[]) types.toArray(NO_TYPES), selection, namedParams); } public List list() throws HibernateException { ! return session.find(queryString, values.toArray(), (Type[]) types.toArray(NO_TYPES), selection, namedParams); } --- 49,70 ---- public Iterator iterate() throws HibernateException { ! Map namedParams = new HashMap(); ! namedParams.putAll(namedParameters); ! String query = bindParameterLists(namedParams); ! return session.iterate(query, values.toArray(), (Type[]) types.toArray(NO_TYPES), selection, namedParams); } public ScrollableResults scroll() throws HibernateException { ! Map namedParams = new HashMap(); ! namedParams.putAll(namedParameters); ! String query = bindParameterLists(namedParams); ! return session.scroll(query, values.toArray(), (Type[]) types.toArray(NO_TYPES), selection, namedParams); } public List list() throws HibernateException { ! Map namedParams = new HashMap(); ! namedParams.putAll(namedParameters); ! String query = bindParameterLists(namedParams); ! return session.find(query, values.toArray(), (Type[]) types.toArray(NO_TYPES), selection, namedParams); } *************** *** 220,224 **** public void setParameter(String name, Object val, Type type) { ! namedParams.put(name, new TypedValue(type, val) ); } --- 230,234 ---- public void setParameter(String name, Object val, Type type) { ! namedParameters.put(name, new TypedValue(type, val) ); } *************** *** 285,289 **** public void setParameterList(String name, Collection vals, Type type) throws HibernateException { ! StringBuffer list = new StringBuffer(16); Iterator iter = vals.iterator(); --- 295,314 ---- public void setParameterList(String name, Collection vals, Type type) throws HibernateException { ! namedParameterLists.put( name, new TypedValue(type, vals) ); ! } ! ! private String bindParameterLists(Map namedParams) { ! Iterator iter = namedParameterLists.entrySet().iterator(); ! String query = queryString; ! while ( iter.hasNext() ) { ! Map.Entry me = (Map.Entry) iter.next(); ! query = bindParameterList( queryString, (String) me.getKey(), (TypedValue) me.getValue(), namedParams ); ! } ! return query; ! } ! ! private String bindParameterList(String queryString, String name, TypedValue typedList, Map namedParams) { ! Collection vals = (Collection) typedList.getValue(); ! Type type = typedList.getType(); StringBuffer list = new StringBuffer(16); Iterator iter = vals.iterator(); *************** *** 291,301 **** while ( iter.hasNext() ) { String alias = name + i++ + StringHelper.UNDERSCORE; ! setParameter(alias, iter.next(), type); list.append( ':' + alias ); if ( iter.hasNext() ) list.append(StringHelper.COMMA_SPACE); } ! queryString = StringHelper.replaceOnce( queryString, ':' + name, list.toString() ); } public void setParameterList(String name, Collection vals) throws HibernateException { setParameterList(name, vals, guessType( vals.iterator().next() ) ); --- 316,328 ---- while ( iter.hasNext() ) { String alias = name + i++ + StringHelper.UNDERSCORE; ! namedParams.put(alias, new TypedValue( type, iter.next() ) ); list.append( ':' + alias ); if ( iter.hasNext() ) list.append(StringHelper.COMMA_SPACE); } ! ! return StringHelper.replace( queryString, ':' + name, list.toString() ); } + public void setParameterList(String name, Collection vals) throws HibernateException { setParameterList(name, vals, guessType( vals.iterator().next() ) ); *************** *** 340,344 **** Map getNamedParams() { ! return namedParams; } --- 367,371 ---- Map getNamedParams() { ! return namedParameters; } |
From: <one...@us...> - 2003-03-02 06:59:26
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping In directory sc8-pr-cvs1:/tmp/cvs-serv18450/hibernate/mapping Modified Files: Column.java Log Message: fixed a problem with outer joins and subclasses Index: Column.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/mapping/Column.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Column.java 22 Feb 2003 06:42:07 -0000 1.8 --- Column.java 2 Mar 2003 06:58:50 -0000 1.9 *************** *** 89,94 **** ! public String getSqlType(Dialect dialect, Mapping pi) throws HibernateException { ! return (sqlType==null) ? dialect.getTypeName( getAutoSqlType(pi), getLength() ) : sqlType; } --- 89,94 ---- ! public String getSqlType(Dialect dialect, Mapping mapping) throws HibernateException { ! return (sqlType==null) ? dialect.getTypeName( getAutoSqlType(mapping), getLength() ) : sqlType; } |
From: <one...@us...> - 2003-03-02 06:59:23
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql In directory sc8-pr-cvs1:/tmp/cvs-serv18450/hibernate/hql Modified Files: PathExpressionParser.java QueryTranslator.java WhereParser.java Log Message: fixed a problem with outer joins and subclasses Index: PathExpressionParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/PathExpressionParser.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** PathExpressionParser.java 1 Mar 2003 12:15:27 -0000 1.11 --- PathExpressionParser.java 2 Mar 2003 06:58:48 -0000 1.12 *************** *** 385,389 **** join.addJoin( p.getTableName(), elementName, collectionElementColumns, keyColumnNames, joinType); } ! q.addFromType(elementName, clazz, join); return elementName; --- 385,389 ---- join.addJoin( p.getTableName(), elementName, collectionElementColumns, keyColumnNames, joinType); } ! q.addFromType(elementName, clazz, join, false); return elementName; Index: QueryTranslator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/QueryTranslator.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** QueryTranslator.java 1 Mar 2003 12:15:27 -0000 1.16 --- QueryTranslator.java 2 Mar 2003 06:58:48 -0000 1.17 *************** *** 60,64 **** private final List scalarTypes = new ArrayList(); private final Map namedParameters = new HashMap(); ! private final HashMap aliasNames = new HashMap(); private final List scalarSelectTokens = new ArrayList(); --- 60,65 ---- private final List scalarTypes = new ArrayList(); private final Map namedParameters = new HashMap(); ! private final Map aliasNames = new HashMap(); ! private final Set crossJoins = new HashSet(); private final List scalarSelectTokens = new ArrayList(); *************** *** 321,328 **** } ! void addFromType(String name, Class type, JoinFragment join) { addType(name, type); fromTypes.add(name); addJoin(name, join); } --- 322,331 ---- } ! void addFromType(String name, Class type, JoinFragment join, boolean crossJoin) { ! //TODO: join type!! addType(name, type); fromTypes.add(name); addJoin(name, join); + if (crossJoin) crossJoins.add(name); } *************** *** 330,334 **** JoinFragment ojf = createJoinFragment(); ojf.addCrossJoin( classPersister.getTableName(), name ); ! addFromType( name, classPersister.getMappedClass(), ojf ); } --- 333,337 ---- JoinFragment ojf = createJoinFragment(); ojf.addCrossJoin( classPersister.getTableName(), name ); ! addFromType(name, classPersister.getMappedClass(), ojf, true); } *************** *** 615,622 **** JoinFragment join = (JoinFragment) joins.get(name); if (join!=null) { ojf.addFragment(join); ojf.addJoins( ! p.fromJoinFragment(name, true, includeSubclasses), ! p.queryWhereFragment(name, includeSubclasses) ); } --- 618,626 ---- JoinFragment join = (JoinFragment) joins.get(name); if (join!=null) { + boolean isCrossJoin = crossJoins.contains(name); ojf.addFragment(join); ojf.addJoins( ! p.fromJoinFragment(name, isCrossJoin, includeSubclasses), ! p.queryWhereFragment(name, isCrossJoin, includeSubclasses) ); } *************** *** 696,700 **** ); } ! addFromType( elementName, elemType.getPersistentClass(), join ); } --- 700,704 ---- ); } ! addFromType(elementName, elemType.getPersistentClass(), join, false); } *************** *** 852,859 **** } } - /*else if ( returnTypes.length==1 && persisters.length>1 ) { - // we are doing some outerjoining - return row[ persisters.length-1 ]; - }*/ else if (holderClass==null) { return (row.length==1) ? row[0] : row; --- 856,859 ---- Index: WhereParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/WhereParser.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** WhereParser.java 1 Mar 2003 21:27:29 -0000 1.9 --- WhereParser.java 2 Mar 2003 06:58:49 -0000 1.10 *************** *** 167,174 **** name = pathExpressionParser.continueFromManyToMany(clazz, element.elementColumns, q); } - /*else if ( type.isPersistentCollectionType() ) { //ie. a subcollection - String role = ( (PersistentCollectionType) type ).getRole(); - name = pathExpressionParser.continueFromSubcollection(role, element.elementColumns, q); - }*/ else { throw new QueryException("illegally dereferenced collection element"); --- 167,170 ---- *************** *** 286,292 **** openExpression(q, lcToken); } - /*else if ( lcToken.equals("not") ) { - startNot(q); - }*/ //Cope with special cases of AND, NOT, ) --- 282,285 ---- *************** *** 323,335 **** appendToken(q, ( (StringBuffer) joins.removeLast() ).toString() ); - // finish off any unary operations - /*int count = ( (Integer) unaryCounts.removeLast() ).intValue(); - for ( int i=0; i<count; i++ ) { //to allow not not, not not not, etc... - appendToken(q, StringHelper.CLOSE); - }*/ - } else { - //unaryCounts.removeLast(); //check that its zero? (As an assertion) StringBuffer join = (StringBuffer) joins.removeLast(); ( (StringBuffer) joins.getLast() ).append( join.toString() ); --- 316,321 ---- *************** *** 342,346 **** private void openExpression(QueryTranslator q, String lcToken) { - //unaryCounts.addLast( new Integer(0) ); nots.addLast(Boolean.FALSE); booleanTests.addLast(Boolean.FALSE); --- 328,331 ---- *************** *** 348,359 **** if ( !StringHelper.OPEN_PAREN.equals(lcToken) ) appendToken(q, StringHelper.OPEN_PAREN); } ! ! /*private void startNot(QueryTranslator q) { ! // increment the count ! Integer count = new Integer( ( (Integer) unaryCounts.removeLast() ).intValue() + 1 ); ! unaryCounts.addLast(count); ! appendToken(q, StringHelper.OPEN); ! }*/ ! private void doPathExpression(String token, QueryTranslator q) throws QueryException { q.unalias(token); --- 333,337 ---- if ( !StringHelper.OPEN_PAREN.equals(lcToken) ) appendToken(q, StringHelper.OPEN_PAREN); } ! private void doPathExpression(String token, QueryTranslator q) throws QueryException { q.unalias(token); |
From: <one...@us...> - 2003-03-02 06:59:01
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test In directory sc8-pr-cvs1:/tmp/cvs-serv18450/hibernate/test Modified Files: FooBarTest.java ODMGTest.java Log Message: fixed a problem with outer joins and subclasses Index: FooBarTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/FooBarTest.java,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** FooBarTest.java 1 Mar 2003 12:15:27 -0000 1.32 --- FooBarTest.java 2 Mar 2003 06:58:54 -0000 1.33 *************** *** 57,60 **** --- 57,89 ---- } + public void testNamedParams() throws Exception { + Bar bar = new Bar(); + Bar bar2 = new Bar(); + bar.setName("Bar"); + bar2.setName("Bar Two"); + Baz baz = new Baz(); + baz.setCascadingBars( new HashSet() ); + baz.getCascadingBars().add(bar); + bar.setBaz(baz); + Session s = sessions.openSession(); + s.save(baz); + s.save(bar2); + Query q = s.createQuery("select bar, b from Bar bar left join bar.baz baz left join baz.cascadingBars b where bar.name like 'Bar%'"); + List list = q.list(); + assertTrue( list.size()==2 ); + q = s.createQuery("select bar, b from Bar bar inner join bar.baz baz inner join baz.cascadingBars b where bar.name like 'Bar%'"); + list = q.list(); + assertTrue( list.size()==1 ); + q = s.createQuery("select bar, b from Bar bar left join bar.baz baz left join baz.cascadingBars b where bar.name like :name and b.name like :name"); + q.setString("name", "Bar%"); + list = q.list(); + assertTrue( list.size()==1 ); + s.delete(baz); + s.delete(bar2); + s.flush(); + s.connection().commit(); + s.close(); + } + public void testDyna() throws Exception { Session s = sessions.openSession(); Index: ODMGTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/ODMGTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ODMGTest.java 5 Jan 2003 02:11:23 -0000 1.3 --- ODMGTest.java 2 Mar 2003 06:58:55 -0000 1.4 *************** *** 57,61 **** try { TestCase.exportSchema( new String[] { ! "../odmg/Name.hbm.xml", "FooBar.hbm.xml", "Baz.hbm.xml", "Qux.hbm.xml", "Glarch.hbm.xml", "Fum.hbm.xml", "Fumm.hbm.xml", "Fo.hbm.xml", "One.hbm.xml", "Many.hbm.xml", "Immutable.hbm.xml", "Fee.hbm.xml", "Vetoer.hbm.xml", "Holder.hbm.xml", "Location.hbm.xml"/*, "ParentChild.hbm.xml", "Simple.hbm.xml", "Container.hbm.xml"*/ } ); return new TestSuite(ODMGTest.class); --- 57,78 ---- try { TestCase.exportSchema( new String[] { ! "../odmg/Name.hbm.xml", ! "FooBar.hbm.xml", ! "Baz.hbm.xml", ! "Qux.hbm.xml", ! "Glarch.hbm.xml", ! "Fum.hbm.xml", ! "Fumm.hbm.xml", ! "Fo.hbm.xml", ! "One.hbm.xml", ! "Many.hbm.xml", ! "Immutable.hbm.xml", ! "Fee.hbm.xml", ! "Vetoer.hbm.xml", ! "Holder.hbm.xml", ! "Location.hbm.xml", ! "Stuff.hbm.xml", ! "Container.hbm.xml", ! "Simple.hbm.xml" } ); return new TestSuite(ODMGTest.class); |
From: <one...@us...> - 2003-03-02 06:59:01
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister In directory sc8-pr-cvs1:/tmp/cvs-serv18450/hibernate/persister Modified Files: EntityPersister.java NormalizedEntityPersister.java Queryable.java Log Message: fixed a problem with outer joins and subclasses Index: EntityPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/EntityPersister.java,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** EntityPersister.java 23 Feb 2003 01:32:20 -0000 1.18 --- EntityPersister.java 2 Mar 2003 06:58:51 -0000 1.19 *************** *** 820,826 **** } ! public String queryWhereFragment(String name, boolean includeSubclasses) throws MappingException { ! if ( isInherited() ) { InFragment frag = new InFragment() .setColumn( name, getDiscriminatorColumnName() ); --- 820,826 ---- } ! public String queryWhereFragment(String name, boolean innerJoin, boolean includeSubclasses) throws MappingException { ! if ( innerJoin && isInherited() ) { InFragment frag = new InFragment() .setColumn( name, getDiscriminatorColumnName() ); *************** *** 834,838 **** } else { ! return ""; } --- 834,838 ---- } else { ! return StringHelper.EMPTY_STRING; } Index: NormalizedEntityPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/NormalizedEntityPersister.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** NormalizedEntityPersister.java 23 Feb 2003 07:22:11 -0000 1.11 --- NormalizedEntityPersister.java 2 Mar 2003 06:58:52 -0000 1.12 *************** *** 1035,1040 **** } ! public String queryWhereFragment(String alias, boolean includeSubclasses) throws MappingException { ! return whereJoinFragment(alias, true, includeSubclasses); } --- 1035,1040 ---- } ! public String queryWhereFragment(String alias, boolean innerJoin, boolean includeSubclasses) throws MappingException { ! return whereJoinFragment(alias, innerJoin, includeSubclasses); } Index: Queryable.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/persister/Queryable.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** Queryable.java 24 Jan 2003 10:21:36 -0000 1.5 --- Queryable.java 2 Mar 2003 06:58:53 -0000 1.6 *************** *** 44,48 **** * Get the where clause fragment, given a query alias */ ! public String queryWhereFragment(String alias, boolean includeSubclasses) throws MappingException; /** --- 44,48 ---- * Get the where clause fragment, given a query alias */ ! public String queryWhereFragment(String alias, boolean innerJoin, boolean includeSubclasses) throws MappingException; /** |
From: <one...@us...> - 2003-03-02 02:18:48
|
Update of /cvsroot/hibernate/Hibernate/cirrus/hibernate/impl In directory sc8-pr-cvs1:/tmp/cvs-serv24354/hibernate/impl Modified Files: CollectionPersister.java Log Message: more helpful exception message Index: CollectionPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate/cirrus/hibernate/impl/CollectionPersister.java,v retrieving revision 1.89 retrieving revision 1.90 diff -C2 -d -r1.89 -r1.90 *** CollectionPersister.java 30 Jan 2003 13:04:00 -0000 1.89 --- CollectionPersister.java 2 Mar 2003 02:18:45 -0000 1.90 *************** *** 314,322 **** public Object readElement(ResultSet rs, SessionImplementor session) throws HibernateException, SQLException { ! Object element = getElementType().nullSafeGet(rs, unquotedElementColumnNames, session, null); ! return element; } public Object readIndex(ResultSet rs, SessionImplementor session) throws HibernateException, SQLException { ! return getIndexType().nullSafeGet(rs, unquotedIndexColumnNames, session, null); } --- 314,323 ---- public Object readElement(ResultSet rs, SessionImplementor session) throws HibernateException, SQLException { ! return getElementType().nullSafeGet(rs, unquotedElementColumnNames, session, null); } public Object readIndex(ResultSet rs, SessionImplementor session) throws HibernateException, SQLException { ! Object index = getIndexType().nullSafeGet(rs, unquotedIndexColumnNames, session, null); ! if (index==null) throw new HibernateException("null index column for collection: " + role); ! return index; } *************** *** 338,342 **** public void writeKey(PreparedStatement st, Serializable id, boolean writeOrder, SessionImplementor session) throws HibernateException, SQLException { ! if ( id==null ) throw new NullPointerException("Null Collection Key"); //an assertion getKeyType().nullSafeSet(st, id, 1+(writeOrder?elementColumnNames.length:0), session); } --- 339,343 ---- public void writeKey(PreparedStatement st, Serializable id, boolean writeOrder, SessionImplementor session) throws HibernateException, SQLException { ! if ( id==null ) throw new NullPointerException("null key for collection: " + role); //an assertion getKeyType().nullSafeSet(st, id, 1+(writeOrder?elementColumnNames.length:0), session); } |
From: <one...@us...> - 2003-03-02 02:17:59
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/collection In directory sc8-pr-cvs1:/tmp/cvs-serv24169/hibernate/collection Modified Files: CollectionPersister.java Log Message: more helpful exception message Index: CollectionPersister.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/collection/CollectionPersister.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** CollectionPersister.java 19 Feb 2003 01:51:30 -0000 1.12 --- CollectionPersister.java 2 Mar 2003 02:17:55 -0000 1.13 *************** *** 330,334 **** } public Object readIndex(ResultSet rs, SessionImplementor session) throws HibernateException, SQLException { ! return getIndexType().nullSafeGet(rs, unquotedIndexColumnNames, session, null); } --- 330,336 ---- } public Object readIndex(ResultSet rs, SessionImplementor session) throws HibernateException, SQLException { ! Object index = getIndexType().nullSafeGet(rs, unquotedIndexColumnNames, session, null); ! if (index==null) throw new HibernateException("null index column for collection: " + role); ! return index; } *************** *** 350,354 **** public void writeKey(PreparedStatement st, Serializable id, boolean writeOrder, SessionImplementor session) throws HibernateException, SQLException { ! if ( id==null ) throw new NullPointerException("Null Collection Key"); //an assertion getKeyType().nullSafeSet(st, id, 1+(writeOrder?elementColumnNames.length:0), session); } --- 352,356 ---- public void writeKey(PreparedStatement st, Serializable id, boolean writeOrder, SessionImplementor session) throws HibernateException, SQLException { ! if (id==null) throw new NullPointerException("null key for collection: " + role); //an assertion getKeyType().nullSafeSet(st, id, 1+(writeOrder?elementColumnNames.length:0), session); } |
From: <one...@us...> - 2003-03-01 21:27:33
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect In directory sc8-pr-cvs1:/tmp/cvs-serv3839/hibernate/dialect Modified Files: Dialect.java GenericDialect.java Added Files: FrontBaseDialect.java Log Message: added FrontBase support (Ron Lussier) added support for PostgreSQL ilike operator (M Lang) --- NEW FILE: FrontBaseDialect.java --- package net.sf.hibernate.dialect; import java.sql.Types; /** * An SQL Dialect for Frontbase. * * @author ron lussier - rlu...@le... */ public class FrontBaseDialect extends Dialect { public FrontBaseDialect() { super(); register( Types.BIT, "BIT" ); register( Types.BIGINT, "LONGINT" ); register( Types.SMALLINT, "SMALLINT" ); register( Types.TINYINT, "TINYINT" ); register( Types.INTEGER, "INTEGER" ); register( Types.CHAR, "CHAR(1)" ); register( Types.VARCHAR, "VARCHAR($l)" ); register( Types.FLOAT, "FLOAT" ); register( Types.DOUBLE, "DOUBLE PRECISION" ); register( Types.DATE, "DATE" ); register( Types.TIME, "TIME" ); register( Types.TIMESTAMP, "TIMESTAMP" ); register( Types.VARBINARY, "BIT VARYING($l)" ); register( Types.NUMERIC, "NUMERIC(19, $l)" ); register( Types.BLOB, "BLOB" ); register( Types.CLOB, "CLOB" ); } public String getAddColumnString() { return "add column"; } public String getCascadeConstraintsString() { return " cascade"; } } Index: Dialect.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect/Dialect.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Dialect.java 23 Feb 2003 07:22:11 -0000 1.8 --- Dialect.java 1 Mar 2003 21:27:29 -0000 1.9 *************** *** 150,158 **** /** ! * The syntax used to add a column to a table. ! * @deprecated not supported on many platforms ! * @return String */ ! public abstract String getAddColumnString(); /** --- 150,158 ---- /** ! * The syntax used to add a column to a table (optional). */ ! public String getAddColumnString() { ! throw new UnsupportedOperationException("No add column syntax suppoerted by Dialect"); ! } /** Index: GenericDialect.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/dialect/GenericDialect.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** GenericDialect.java 5 Jan 2003 02:11:20 -0000 1.3 --- GenericDialect.java 1 Mar 2003 21:27:29 -0000 1.4 *************** *** 30,37 **** } - public String getAddColumnString() { - return "add column"; - } - } --- 30,33 ---- |
From: <one...@us...> - 2003-03-01 21:27:33
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql In directory sc8-pr-cvs1:/tmp/cvs-serv3839/hibernate/hql Modified Files: WhereParser.java Log Message: added FrontBase support (Ron Lussier) added support for PostgreSQL ilike operator (M Lang) Index: WhereParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/WhereParser.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** WhereParser.java 1 Mar 2003 06:14:10 -0000 1.8 --- WhereParser.java 1 Mar 2003 21:27:29 -0000 1.9 *************** *** 61,64 **** --- 61,65 ---- booleanOperators.add("~"); booleanOperators.add("like"); + booleanOperators.add("ilike"); booleanOperators.add("is"); booleanOperators.add("in"); *************** *** 80,83 **** --- 81,85 ---- booleanOperators.add("is not"); booleanOperators.add("not like"); + booleanOperators.add("not ilike"); booleanOperators.add("not in"); booleanOperators.add("not between"); *************** *** 92,95 **** --- 94,98 ---- negations.put("~", "!~"); negations.put("like", "not like"); + negations.put("ilike", "not ilike"); negations.put("is", "is not"); negations.put("in", "not in"); *************** *** 108,111 **** --- 111,115 ---- negations.put("is not", "is"); negations.put("not like", "like"); + negations.put("not ilike", "ilike"); negations.put("not in", "in"); negations.put("not between", "between"); |
From: <one...@us...> - 2003-03-01 21:27:33
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/id In directory sc8-pr-cvs1:/tmp/cvs-serv3839/hibernate/id Modified Files: TableGenerator.java Log Message: added FrontBase support (Ron Lussier) added support for PostgreSQL ilike operator (M Lang) Index: TableGenerator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/id/TableGenerator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** TableGenerator.java 9 Jan 2003 12:24:50 -0000 1.1 --- TableGenerator.java 1 Mar 2003 21:27:30 -0000 1.2 *************** *** 138,142 **** public String sqlDropString(Dialect dialect) { ! return "drop table " + tableName; } --- 138,142 ---- public String sqlDropString(Dialect dialect) { ! return "drop table " + tableName + dialect.getCascadeConstraintsString(); } |
From: <one...@us...> - 2003-03-01 21:16:16
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test In directory sc8-pr-cvs1:/tmp/cvs-serv32754/hibernate/test Added Files: Result.java Log Message: added missing test class --- NEW FILE: Result.java --- package net.sf.hibernate.test; public class Result { private String name; private long amount; private int count; /** * Returns the amount. * @return long */ public long getAmount() { return amount; } /** * Returns the count. * @return int */ public int getCount() { return count; } /** * Returns the name. * @return String */ public String getName() { return name; } /** * Sets the amount. * @param amount The amount to set */ public void setAmount(long amount) { this.amount = amount; } /** * Sets the count. * @param count The count to set */ public void setCount(int count) { this.count = count; } /** * Sets the name. * @param name The name to set */ public void setName(String name) { this.name = name; } public Result(String n, long a, int c) { name = n; amount = a; count = c; } } |
From: <max...@us...> - 2003-03-01 20:15:37
|
Update of /cvsroot/hibernate/Hibernate2 In directory sc8-pr-cvs1:/tmp/cvs-serv10532 Modified Files: changelog.txt Log Message: just making sure not to forget Zimmermans contribution to hbm2java regarding beans style property events Index: changelog.txt =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/changelog.txt,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** changelog.txt 24 Feb 2003 11:53:44 -0000 1.8 --- changelog.txt 1 Mar 2003 20:15:30 -0000 1.9 *************** *** 1,4 **** --- 1,9 ---- Hibernate Changelog =================== + + Changes in version 2.x beta x (x.x.2003) + ---------------------------------------- + * hbm2java now can generate Beans style property events (Klaus Zimmermann) + Changes in version 2.0 beta 3 (2.2.2003) ---------------------------------------- |
Update of /cvsroot/hibernate/Hibernate2/bin In directory sc8-pr-cvs1:/tmp/cvs-serv28899/bin Modified Files: CodeGenerator.bat MapGenerator.bat ReverseGenerator.bat SchemaExport.bat SchemaUpdate.bat Log Message: call it hibernate2.jar Index: CodeGenerator.bat =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/bin/CodeGenerator.bat,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** CodeGenerator.bat 1 Jan 2003 13:42:58 -0000 1.1.1.1 --- CodeGenerator.bat 1 Mar 2003 13:11:16 -0000 1.2 *************** *** 9,13 **** set LIB=%HIBERNATE_HOME%\lib set PROPS=%HIBERNATE_HOME%\src ! set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%\hibernate.jar;%LIB%\commons-logging.jar;%LIB%\commons-collections.jar;%LIB%\commons-lang.jar;%LIB%\cglib.jar;%LIB%\odmg.jar;%LIB%\jdom.jar;%LIB%\xml-apis.jar;%LIB%\xerces.jar;%LIB%\xalan.jar java -cp %CP% net.sf.hibernate.tool.hbm2java.CodeGenerator %* --- 9,13 ---- set LIB=%HIBERNATE_HOME%\lib set PROPS=%HIBERNATE_HOME%\src ! set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%\hibernate2.jar;%LIB%\commons-logging.jar;%LIB%\commons-collections.jar;%LIB%\commons-lang.jar;%LIB%\cglib.jar;%LIB%\odmg.jar;%LIB%\jdom.jar;%LIB%\xml-apis.jar;%LIB%\xerces.jar;%LIB%\xalan.jar java -cp %CP% net.sf.hibernate.tool.hbm2java.CodeGenerator %* Index: MapGenerator.bat =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/bin/MapGenerator.bat,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** MapGenerator.bat 1 Jan 2003 13:42:58 -0000 1.1.1.1 --- MapGenerator.bat 1 Mar 2003 13:11:16 -0000 1.2 *************** *** 9,13 **** set LIB=%HIBERNATE_HOME%\lib set PROPS=%HIBERNATE_HOME%\src ! set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%\hibernate.jar;%LIB%\commons-logging.jar;%LIB%\commons-collections.jar;%LIB%\commons-lang.jar;%LIB%\cglib.jar;%LIB%\odmg.jar;%LIB%\jdom.jar;%LIB%\xml-apis.jar;%LIB%\xerces.jar;%LIB%\xalan.jar java -cp %CP% net.sf.hibernate.tool.class2hbm.MapGenerator %* --- 9,13 ---- set LIB=%HIBERNATE_HOME%\lib set PROPS=%HIBERNATE_HOME%\src ! set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%\hibernate2.jar;%LIB%\commons-logging.jar;%LIB%\commons-collections.jar;%LIB%\commons-lang.jar;%LIB%\cglib.jar;%LIB%\odmg.jar;%LIB%\jdom.jar;%LIB%\xml-apis.jar;%LIB%\xerces.jar;%LIB%\xalan.jar java -cp %CP% net.sf.hibernate.tool.class2hbm.MapGenerator %* Index: ReverseGenerator.bat =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/bin/ReverseGenerator.bat,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** ReverseGenerator.bat 1 Jan 2003 13:42:58 -0000 1.1.1.1 --- ReverseGenerator.bat 1 Mar 2003 13:11:16 -0000 1.2 *************** *** 9,13 **** set LIB=%HIBERNATE_HOME%\lib set PROPS=%HIBERNATE_HOME%\src ! set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%\hibernate.jar;%LIB%\commons-logging.jar;%LIB%\commons-collections.jar;%LIB%\commons-lang.jar;%LIB%\cglib.jar;%LIB%\odmg.jar;%LIB%\jdom.jar;%LIB%\xml-apis.jar;%LIB%\xerces.jar;%LIB%\xalan.jar java -cp %CP% net.sf.hibernate.tool.ddl2hbm.Gui --- 9,13 ---- set LIB=%HIBERNATE_HOME%\lib set PROPS=%HIBERNATE_HOME%\src ! set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%\hibernate2.jar;%LIB%\commons-logging.jar;%LIB%\commons-collections.jar;%LIB%\commons-lang.jar;%LIB%\cglib.jar;%LIB%\odmg.jar;%LIB%\jdom.jar;%LIB%\xml-apis.jar;%LIB%\xerces.jar;%LIB%\xalan.jar java -cp %CP% net.sf.hibernate.tool.ddl2hbm.Gui Index: SchemaExport.bat =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/bin/SchemaExport.bat,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** SchemaExport.bat 1 Jan 2003 13:42:58 -0000 1.1.1.1 --- SchemaExport.bat 1 Mar 2003 13:11:16 -0000 1.2 *************** *** 9,13 **** set LIB=%HIBERNATE_HOME%\lib set PROPS=%HIBERNATE_HOME%\src ! set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%\hibernate.jar;%LIB%\commons-logging.jar;%LIB%\commons-collections.jar;%LIB%\commons-lang.jar;%LIB%\cglib.jar;%LIB%\odmg.jar;%LIB%\jdom.jar;%LIB%\xml-apis.jar;%LIB%\xerces.jar;%LIB%\xalan.jar java -cp %CP% net.sf.hibernate.tool.hbm2ddl.SchemaExport %* --- 9,13 ---- set LIB=%HIBERNATE_HOME%\lib set PROPS=%HIBERNATE_HOME%\src ! set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%\hibernate2.jar;%LIB%\commons-logging.jar;%LIB%\commons-collections.jar;%LIB%\commons-lang.jar;%LIB%\cglib.jar;%LIB%\odmg.jar;%LIB%\jdom.jar;%LIB%\xml-apis.jar;%LIB%\xerces.jar;%LIB%\xalan.jar java -cp %CP% net.sf.hibernate.tool.hbm2ddl.SchemaExport %* Index: SchemaUpdate.bat =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/bin/SchemaUpdate.bat,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** SchemaUpdate.bat 1 Jan 2003 13:42:58 -0000 1.1.1.1 --- SchemaUpdate.bat 1 Mar 2003 13:11:16 -0000 1.2 *************** *** 9,13 **** set LIB=%HIBERNATE_HOME%\lib set PROPS=%HIBERNATE_HOME%\src ! set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%\hibernate.jar;%LIB%\commons-logging.jar;%LIB%\commons-collections.jar;%LIB%\commons-lang.jar;%LIB%\cglib.jar;%LIB%\odmg.jar;%LIB%\jdom.jar;%LIB%\xml-apis.jar;%LIB%\xerces.jar;%LIB%\xalan.jar java -cp %CP% net.sf.hibernate.tool.hbm2ddl.SchemaUpdate %* --- 9,13 ---- set LIB=%HIBERNATE_HOME%\lib set PROPS=%HIBERNATE_HOME%\src ! set CP=%JDBC_DRIVER%;%PROPS%;%HIBERNATE_HOME%\hibernate2.jar;%LIB%\commons-logging.jar;%LIB%\commons-collections.jar;%LIB%\commons-lang.jar;%LIB%\cglib.jar;%LIB%\odmg.jar;%LIB%\jdom.jar;%LIB%\xml-apis.jar;%LIB%\xerces.jar;%LIB%\xalan.jar java -cp %CP% net.sf.hibernate.tool.hbm2ddl.SchemaUpdate %* |
From: <one...@us...> - 2003-03-01 13:11:21
|
Update of /cvsroot/hibernate/Hibernate2 In directory sc8-pr-cvs1:/tmp/cvs-serv28899 Modified Files: build.xml demo.bat demo.sh Log Message: call it hibernate2.jar Index: build.xml =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/build.xml,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** build.xml 24 Feb 2003 11:53:44 -0000 1.7 --- build.xml 1 Mar 2003 13:11:16 -0000 1.8 *************** *** 31,34 **** --- 31,35 ---- <property name="dist.src.dir" value="${dist.dir}/src"/> <property name="dist.lib.dir" value="${dist.dir}/lib"/> + <property name="jar.name" value="${name2}"/> <property name="javadoc" value="http://java.sun.com/j2se/1.3/docs/api"/> *************** *** 132,136 **** <target name="jar" depends="compile" description="Build the distribution .jar file"> <mkdir dir="${dist.dir}"/> ! <jar jarfile="${dist.dir}/${name2}.jar" basedir="${build.dir}"/> </target> --- 133,137 ---- <target name="jar" depends="compile" description="Build the distribution .jar file"> <mkdir dir="${dist.dir}"/> ! <jar jarfile="${dist.dir}/${jar.name}.jar" basedir="${build.dir}"/> </target> Index: demo.bat =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/demo.bat,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** demo.bat 5 Feb 2003 12:21:48 -0000 1.2 --- demo.bat 1 Mar 2003 13:11:16 -0000 1.3 *************** *** 1,2 **** set JDBC_DRIVER=C:\Progra~1\SQLLIB\java\db2java.zip ! java -cp src;%JDBC_DRIVER%;lib\commons-logging.jar;lib\commons-collections.jar;lib\commons-beanutils.jar;lib\commons-lang.jar;lib\cglib.jar;lib\bcel.jar;lib\odmg.jar;lib\jdom.jar;lib\xml-apis.jar;lib\xerces.jar;lib\xalan.jar;hibernate.jar net.sf.hibernate.eg.NetworkDemo --- 1,2 ---- set JDBC_DRIVER=C:\Progra~1\SQLLIB\java\db2java.zip ! java -cp src;%JDBC_DRIVER%;lib\commons-logging.jar;lib\commons-collections.jar;lib\commons-beanutils.jar;lib\commons-lang.jar;lib\cglib.jar;lib\bcel.jar;lib\odmg.jar;lib\jdom.jar;lib\xml-apis.jar;lib\xerces.jar;lib\xalan.jar;hibernate2.jar net.sf.hibernate.eg.NetworkDemo Index: demo.sh =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/demo.sh,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** demo.sh 5 Feb 2003 12:21:48 -0000 1.3 --- demo.sh 1 Mar 2003 13:11:16 -0000 1.4 *************** *** 1,3 **** #!/bin/sh JDBC_DRIVER=/opt/pgsql/lib/postgresql-jdbc3-7.3.jar ! java -cp ./src:$JDBC_DRIVER:./lib/commons-logging.jar:./lib/commons-collections.jar:./lib/commons-lang.jar:./lib/commons-beanutils.jar:./lib/cglib.jar:./lib/bcel.jar:./lib/odmg.jar:./lib/jdom.jar:./lib/xml-apis.jar:./lib/xerces.jar:./lib/xalan.jar:./hibernate.jar net.sf.hibernate.eg.NetworkDemo --- 1,3 ---- #!/bin/sh JDBC_DRIVER=/opt/pgsql/lib/postgresql-jdbc3-7.3.jar ! java -cp ./src:$JDBC_DRIVER:./lib/commons-logging.jar:./lib/commons-collections.jar:./lib/commons-lang.jar:./lib/commons-beanutils.jar:./lib/cglib.jar:./lib/bcel.jar:./lib/odmg.jar:./lib/jdom.jar:./lib/xml-apis.jar:./lib/xerces.jar:./lib/xalan.jar:./hibernate2.jar net.sf.hibernate.eg.NetworkDemo |
From: <one...@us...> - 2003-03-01 13:02:23
|
Update of /cvsroot/hibernate/Hibernate2/doc/reference/src In directory sc8-pr-cvs1:/tmp/cvs-serv24856/doc/reference/src Modified Files: query_language.xml Log Message: fixed error in example Index: query_language.xml =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/doc/reference/src/query_language.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** query_language.xml 23 Feb 2003 13:53:24 -0000 1.3 --- query_language.xml 1 Mar 2003 13:02:19 -0000 1.4 *************** *** 53,66 **** <programlisting><![CDATA[select cat.mate from cat in class eg.Cat]]></programlisting> ! <para>You may even select collection elements:</para> ! <programlisting><![CDATA[select cat.kittens.elements from cat in class eg.Cat]]></programlisting> <para> ! Queries may return properties any value type including properties of component type: </para> <programlisting><![CDATA[select cat.name from cat in class eg.DomesticCat ! where cat.name like 'fri%']]></programlisting> <para> --- 53,71 ---- <programlisting><![CDATA[select cat.mate from cat in class eg.Cat]]></programlisting> ! <para> ! You may even select collection elements, using the special <literal>elements</literal> ! function. The following query returns all kittens of any cat. ! </para> ! <programlisting><![CDATA[select elements(cat.kittens) from cat in class eg.Cat]]></programlisting> <para> ! Queries may return properties of any value type including properties of component type: </para> <programlisting><![CDATA[select cat.name from cat in class eg.DomesticCat ! where cat.name like 'fri%' ! ! select cust.name.firstName from cust in class Customer]]></programlisting> <para> *************** *** 71,75 **** <programlisting><![CDATA[select mother, offspr from mother in class eg.DomesticCat, offspr in class eg.Cat ! where offspr in mother.kittens.elements ]]></programlisting> <para> --- 76,80 ---- <programlisting><![CDATA[select mother, offspr from mother in class eg.DomesticCat, offspr in class eg.Cat ! where offspr in elements(mother.kittens)]]></programlisting> <para> *************** *** 81,85 **** from cat in class eg.Cat ! select cat, count(cat.kittens.elements) from cat in class eg.Cat group by cat]]></programlisting> <para> --- 86,90 ---- from cat in class eg.Cat ! select cat, count( elements(cat.kittens) ) from cat in class eg.Cat group by cat]]></programlisting> <para> *************** *** 148,156 **** <programlisting><![CDATA[select kitten from cat in class eg.Cat, ! kitten in cat.kittens.elements]]></programlisting> <para> ! The <literal>elements</literal> construct is like a special property referring to the ! element set of the collection. </para> </sect1> --- 153,160 ---- <programlisting><![CDATA[select kitten from cat in class eg.Cat, ! kitten in elements(cat.kittens)]]></programlisting> <para> ! The <literal>elements</literal> function accesses element set of the collection. </para> </sect1> *************** *** 363,384 **** <para> ! The SQL functions <literal>any, some, all, exists, in</literal> are supported when passed one of ! two special properties of a collection. The special properties are <literal>elements</literal> and ! <literal>indices</literal>. Respectively they represent the element set and the index set of the ! collection. </para> <programlisting><![CDATA[select mother from mother in class eg.Cat, kit in class eg.Cat ! where kit in foo.kittens.elements select p from list in class eg.NameList, p in class eg.Person ! where p.name = some list.names.elements ! from cat in class eg.Cat where exists cat.kittens.elements ! from p in class eg.Player where 3 > all p.scores.elements from show in class eg.Show ! where 'fizard' in show.acts.indices]]></programlisting> <para> --- 367,395 ---- <para> ! There are also functional forms (which, unlike the constructs above, are not case sensitive): ! </para> ! ! <programlisting><![CDATA[from order in class Order where maxindex(order.items) > 100 ! ! from order in class Order where size(order.items) > 100]]></programlisting> ! ! <para> ! The SQL functions <literal>any, some, all, exists, in</literal> are supported when passed the element ! or index set of a collection (<literal>elements</literal> and <literal>indices</literal> functions) ! or the result of a subquery (see below). </para> <programlisting><![CDATA[select mother from mother in class eg.Cat, kit in class eg.Cat ! where kit in elements(foo.kittens) select p from list in class eg.NameList, p in class eg.Person ! where p.name = some elements(list.names) ! from cat in class eg.Cat where exists elements(cat.kittens) ! from p in class eg.Player where 3 > all elements(p.scores) from show in class eg.Show ! where 'fizard' in indices(show.acts)]]></programlisting> <para> *************** *** 423,427 **** select item from item in class Item, order in class Order ! where order.items[order.items.maxIndex] = item and order.id = 11]]></programlisting> <para> --- 434,438 ---- select item from item in class Item, order in class Order ! where order.items[ maxindex(order.items) ] = item and order.id = 11]]></programlisting> <para> *************** *** 429,432 **** --- 440,446 ---- </para> + <programlisting><![CDATA[select item from item in class Item, order in class Order + where order.items[ size(order.items) - 1 ] = item]]></programlisting> + <para> Scalar SQL functions supported by the underlying database may be used *************** *** 446,450 **** where prod.name = 'widget' and store.location.name in ( 'Melbourne', 'Sydney' ) ! and prod = all cust.currentOrder.lineItems.elements]]></programlisting> <para> --- 460,464 ---- where prod.name = 'widget' and store.location.name in ( 'Melbourne', 'Sydney' ) ! and prod = all elements(cust.currentOrder.lineItems)]]></programlisting> <para> *************** *** 500,504 **** group by cat.color ! select foo.id, avg(foo.names.elements), max(foo.names.indices) from foo in class eg.Foo group by foo.id]]></programlisting> --- 514,518 ---- group by cat.color ! select foo.id, avg( elements(foo.names) ), max( indices(foo.names) ) from foo in class eg.Foo group by foo.id]]></programlisting> *************** *** 518,525 **** <para> For databases that support subselects, Hibernate supports subqueries within queries. A subquery must ! be surrounded by parentheses (often by an SQL aggregate function call). eg. </para> ! <programlisting><![CDATA[from cat in class eg.Cat where cat.weight > ( select avg(cat.weight) from cat in class eg.DomesticCat ) --- 532,540 ---- <para> For databases that support subselects, Hibernate supports subqueries within queries. A subquery must ! be surrounded by parentheses (often by an SQL aggregate function call). Even /correlated/ subqueries ! (subqueries that refer to an alias in the outer query) are allowed. </para> ! <programlisting><![CDATA[from fatcat in class eg.Cat where fatcat.weight > ( select avg(cat.weight) from cat in class eg.DomesticCat ) |
From: <one...@us...> - 2003-03-01 12:15:31
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type In directory sc8-pr-cvs1:/tmp/cvs-serv1150/sf/hibernate/type Modified Files: BooleanType.java ByteType.java CharacterType.java DoubleType.java FloatType.java IntegerType.java LongType.java PrimitiveType.java ShortType.java Log Message: support for select new Result(....) syntax in HQL Index: BooleanType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/BooleanType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** BooleanType.java 19 Jan 2003 11:47:08 -0000 1.4 --- BooleanType.java 1 Mar 2003 12:15:28 -0000 1.5 *************** *** 19,23 **** } ! public Class primitiveClass() { return boolean.class; } --- 19,23 ---- } ! public Class getPrimitiveClass() { return boolean.class; } Index: ByteType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/ByteType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ByteType.java 19 Jan 2003 11:47:08 -0000 1.4 --- ByteType.java 1 Mar 2003 12:15:28 -0000 1.5 *************** *** 13,17 **** } ! public Class primitiveClass() { return byte.class; } --- 13,17 ---- } ! public Class getPrimitiveClass() { return byte.class; } Index: CharacterType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/CharacterType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** CharacterType.java 19 Jan 2003 11:47:08 -0000 1.4 --- CharacterType.java 1 Mar 2003 12:15:28 -0000 1.5 *************** *** 21,25 **** } ! public Class primitiveClass() { return char.class; } --- 21,25 ---- } ! public Class getPrimitiveClass() { return char.class; } Index: DoubleType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/DoubleType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** DoubleType.java 19 Jan 2003 11:47:08 -0000 1.4 --- DoubleType.java 1 Mar 2003 12:15:28 -0000 1.5 *************** *** 1,3 **** ! //$Id$ package net.sf.hibernate.type; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; public class DoubleType extends PrimitiveType { public Object get(ResultSet rs, String name) throws SQLException { return new Double(rs.getDouble(name)); } public Class primitiveClass() { return double.class; } public Class getReturnedClass() { return Double.class; } public void set(PreparedStatement st, Object value, int index) throws SQLException { st.setDouble(index, ((Double) value).doubleValue()); } public int sqlType() { return Types.DOUBLE; } public String getName() { return "double"; } public String objectToSQLString(Object value) throws Exception { return value.toString(); } } --- 1,3 ---- ! //$Id$ package net.sf.hibernate.type; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; public class DoubleType extends PrimitiveType { public Object get(ResultSet rs, String name) throws SQLException { return new Double(rs.getDouble(name)); } public Class getPrimitiveClass() { return double.class; } public Class getReturnedClass() { return Double.class; } public void set(PreparedStatement st, Object value, int index) throws SQLException { st.setDouble(index, ((Double) value).doubleValue()); } public int sqlType() { return Types.DOUBLE; } public String getName() { return "double"; } public String objectToSQLString(Object value) throws Exception { return value.toString(); } } Index: FloatType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/FloatType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** FloatType.java 19 Jan 2003 11:47:08 -0000 1.4 --- FloatType.java 1 Mar 2003 12:15:28 -0000 1.5 *************** *** 13,17 **** } ! public Class primitiveClass() { return float.class; } --- 13,17 ---- } ! public Class getPrimitiveClass() { return float.class; } Index: IntegerType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/IntegerType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** IntegerType.java 19 Jan 2003 11:47:08 -0000 1.4 --- IntegerType.java 1 Mar 2003 12:15:28 -0000 1.5 *************** *** 15,19 **** } ! public Class primitiveClass() { return int.class; } --- 15,19 ---- } ! public Class getPrimitiveClass() { return int.class; } Index: LongType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/LongType.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** LongType.java 19 Jan 2003 11:47:08 -0000 1.4 --- LongType.java 1 Mar 2003 12:15:28 -0000 1.5 *************** *** 15,19 **** } ! public Class primitiveClass() { return long.class; } --- 15,19 ---- } ! public Class getPrimitiveClass() { return long.class; } Index: PrimitiveType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/PrimitiveType.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** PrimitiveType.java 5 Jan 2003 02:11:24 -0000 1.3 --- PrimitiveType.java 1 Mar 2003 12:15:28 -0000 1.4 *************** *** 9,13 **** public abstract class PrimitiveType extends ImmutableType implements LiteralType { ! public abstract Class primitiveClass(); public boolean equals(Object x, Object y) { --- 9,13 ---- public abstract class PrimitiveType extends ImmutableType implements LiteralType { ! public abstract Class getPrimitiveClass(); public boolean equals(Object x, Object y) { Index: ShortType.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/type/ShortType.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ShortType.java 31 Jan 2003 23:53:11 -0000 1.5 --- ShortType.java 1 Mar 2003 12:15:28 -0000 1.6 *************** *** 15,19 **** } ! public Class primitiveClass() { return short.class; } --- 15,19 ---- } ! public Class getPrimitiveClass() { return short.class; } |
From: <one...@us...> - 2003-03-01 12:15:30
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/hbm2java In directory sc8-pr-cvs1:/tmp/cvs-serv1150/sf/hibernate/tool/hbm2java Modified Files: ClassMapping.java Log Message: support for select new Result(....) syntax in HQL Index: ClassMapping.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/tool/hbm2java/ClassMapping.java,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** ClassMapping.java 16 Feb 2003 12:49:02 -0000 1.12 --- ClassMapping.java 1 Mar 2003 12:15:28 -0000 1.13 *************** *** 593,597 **** !needObject ) { ! cn.setFullyQualifiedName(( (PrimitiveType) basicType ).primitiveClass().getName(),true); return cn; } --- 593,597 ---- !needObject ) { ! cn.setFullyQualifiedName(( (PrimitiveType) basicType ).getPrimitiveClass().getName(),true); return cn; } |
From: <one...@us...> - 2003-03-01 12:15:30
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test In directory sc8-pr-cvs1:/tmp/cvs-serv1150/sf/hibernate/test Modified Files: FooBarTest.java Log Message: support for select new Result(....) syntax in HQL Index: FooBarTest.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/test/FooBarTest.java,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** FooBarTest.java 1 Mar 2003 06:14:10 -0000 1.31 --- FooBarTest.java 1 Mar 2003 12:15:27 -0000 1.32 *************** *** 262,265 **** --- 262,268 ---- s.save(bar); + List list = s.find("select new Result(foo.string, foo.long, foo.integer) from foo in class Foo"); + assertTrue( list.size()==2 && ( list.get(0) instanceof Result ) && ( list.get(1) instanceof Result ) ); + s.find("select baz.name from Bar bar inner join bar.baz baz inner join baz.fooSet foo where baz.name = bar.string"); s.find("SELECT baz.name FROM Bar AS bar INNER JOIN bar.baz AS baz INNER JOIN baz.fooSet AS foo WHERE baz.name = bar.string"); *************** *** 300,304 **** //WAS: assertTrue( iter.next()==null && iter.next()==foos[1] && !iter.hasNext() ); assertTrue( iter.next()==foos[1] && !iter.hasNext() ); ! List list = s.find("select baz.fooArray.elements from baz in class Baz where baz.id=?", baz.getCode(), Hibernate.STRING); //WAS: assertTrue( list.size()==2 ); assertTrue( list.size()==1 ); --- 303,307 ---- //WAS: assertTrue( iter.next()==null && iter.next()==foos[1] && !iter.hasNext() ); assertTrue( iter.next()==foos[1] && !iter.hasNext() ); ! list = s.find("select baz.fooArray.elements from baz in class Baz where baz.id=?", baz.getCode(), Hibernate.STRING); //WAS: assertTrue( list.size()==2 ); assertTrue( list.size()==1 ); |
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql In directory sc8-pr-cvs1:/tmp/cvs-serv1150/sf/hibernate/hql Modified Files: ClauseParser.java PathExpressionParser.java QueryTranslator.java SelectParser.java Log Message: support for select new Result(....) syntax in HQL Index: ClauseParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/ClauseParser.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ClauseParser.java 5 Jan 2003 02:11:21 -0000 1.3 --- ClauseParser.java 1 Mar 2003 12:15:26 -0000 1.4 *************** *** 22,28 **** String lcToken = token.toLowerCase(); ! if ( byExpected && !lcToken.equals("by") ) ! throw new QueryException("BY expected after GROUP or ORDER: " + token); ! if ( !enableSubselect && lcToken.equals("select") ) { --- 22,28 ---- String lcToken = token.toLowerCase(); ! if ( byExpected && !lcToken.equals("by") ) { ! throw new QueryException("BY expected after GROUP or ORDER: " + token); ! } if ( !enableSubselect && lcToken.equals("select") ) { Index: PathExpressionParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/PathExpressionParser.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** PathExpressionParser.java 1 Mar 2003 06:14:10 -0000 1.10 --- PathExpressionParser.java 1 Mar 2003 12:15:27 -0000 1.11 *************** *** 70,74 **** public void token(String token, QueryTranslator q) throws QueryException { ! path += token; String alias = q.getPathAlias(path); --- 70,74 ---- public void token(String token, QueryTranslator q) throws QueryException { ! if (token!=null) path += token; String alias = q.getPathAlias(path); Index: QueryTranslator.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/QueryTranslator.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** QueryTranslator.java 1 Mar 2003 06:14:10 -0000 1.15 --- QueryTranslator.java 1 Mar 2003 12:15:27 -0000 1.16 *************** *** 3,6 **** --- 3,7 ---- import java.io.Serializable; + import java.lang.reflect.Constructor; import java.sql.PreparedStatement; import java.sql.ResultSet; *************** *** 36,39 **** --- 37,41 ---- import net.sf.hibernate.sql.QuerySelect; import net.sf.hibernate.type.EntityType; + import net.sf.hibernate.type.PrimitiveType; import net.sf.hibernate.type.Type; import net.sf.hibernate.util.ArrayHelper; *************** *** 79,83 **** protected boolean compiled; private String sqlString; ! private boolean hasScalars; private boolean shallowQuery; --- 81,86 ---- protected boolean compiled; private String sqlString; ! private Class holderClass; ! private Constructor holderConstructor; private boolean hasScalars; private boolean shallowQuery; *************** *** 480,483 **** --- 483,500 ---- sqlString = sql.toQueryString(); + Class[] classes = new Class[types.length]; + for ( int i=0; i<types.length; i++ ) { + if ( types[i]!=null ) classes[i] = (types[i] instanceof PrimitiveType) ? + ( (PrimitiveType) types[i] ).getPrimitiveClass() : + types[i].getReturnedClass(); + } + + try { + if (holderClass!=null) holderConstructor = holderClass.getConstructor(classes); + } + catch (NoSuchMethodException nsme) { + throw new QueryException("could not find constructor for: " + holderClass.getName(), nsme); + } + } *************** *** 777,780 **** --- 794,801 ---- } + Class getImportedClass(String name) { + return getImportedClass(name, factory); + } + private static Class getImportedClass(String name, SessionFactoryImplementor factory) { try { *************** *** 821,845 **** String[][] names = getScalarColumnNames(); int queryCols = returnTypes.length; ! if ( queryCols==1 ) { return returnTypes[0].nullSafeGet( rs, names[0], session, null ); } else { ! Object[] queryRow = new Object[queryCols]; for ( int i=0; i<queryCols; i++ ) ! queryRow[i] = returnTypes[i].nullSafeGet( rs, names[i], session, null ); ! return queryRow; } } ! else if ( returnTypes.length==1 && persisters.length>1 ) { // we are doing some outerjoining return row[ persisters.length-1 ]; ! } ! else { return (row.length==1) ? row[0] : row; } } QueryJoinFragment createJoinFragment() { return new QueryJoinFragment( factory.getDialect() ); } --- 842,877 ---- String[][] names = getScalarColumnNames(); int queryCols = returnTypes.length; ! if ( holderClass==null && queryCols==1 ) { return returnTypes[0].nullSafeGet( rs, names[0], session, null ); } else { ! row = new Object[queryCols]; for ( int i=0; i<queryCols; i++ ) ! row[i] = returnTypes[i].nullSafeGet( rs, names[i], session, null ); ! if (holderClass==null) return row; } } ! /*else if ( returnTypes.length==1 && persisters.length>1 ) { // we are doing some outerjoining return row[ persisters.length-1 ]; ! }*/ ! else if (holderClass==null) { return (row.length==1) ? row[0] : row; } + + try { + return holderConstructor.newInstance(row); + } + catch (Exception e) { + throw new QueryException("could not instantiate: " + holderClass, e); + } } QueryJoinFragment createJoinFragment() { return new QueryJoinFragment( factory.getDialect() ); + } + + void setHolderClass(Class clazz) { + holderClass = clazz; } Index: SelectParser.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/hql/SelectParser.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** SelectParser.java 28 Feb 2003 07:01:28 -0000 1.6 --- SelectParser.java 1 Mar 2003 12:15:27 -0000 1.7 *************** *** 33,36 **** --- 33,38 ---- private boolean count; private boolean first; + private boolean afterNew; + private Class holderClass; private SelectPathExpressionParser pathExpressionParser = new SelectPathExpressionParser(); *************** *** 53,63 **** } ! if ( token.equals(StringHelper.COMMA) ) { if (ready) throw new QueryException("alias or expression expected in SELECT"); q.appendScalarSelectToken(StringHelper.COMMA_SPACE); ready=true; } else if ( StringHelper.OPEN_PAREN.equals(token) ) { ! if (aggregate) { q.appendScalarSelectToken(token); } --- 55,79 ---- } ! if (afterNew) { ! afterNew=false; ! holderClass = q.getImportedClass(token); ! if (holderClass==null) throw new QueryException("class not found: " + token); ! q.setHolderClass(holderClass); ! } ! else if ( token.equals(StringHelper.COMMA) ) { if (ready) throw new QueryException("alias or expression expected in SELECT"); q.appendScalarSelectToken(StringHelper.COMMA_SPACE); ready=true; } + else if ( "new".equals(lctoken) ) { + afterNew=true; + ready=false; + } else if ( StringHelper.OPEN_PAREN.equals(token) ) { ! if (holderClass!=null && !ready) { ! //opening paren in new Foo ( ... ) ! ready=true; ! } ! else if (aggregate) { q.appendScalarSelectToken(token); } *************** *** 68,72 **** } else if ( StringHelper.CLOSE_PAREN.equals(token) ) { ! if (aggregate && ready) { q.appendScalarSelectToken(token); } --- 84,91 ---- } else if ( StringHelper.CLOSE_PAREN.equals(token) ) { ! if (holderClass!=null && !ready) { ! //closing paren in new Foo ( ... ) ! } ! else if (aggregate && ready) { q.appendScalarSelectToken(token); } *************** *** 84,90 **** else if ( aggregateFunctions.contains(lctoken) ) { if (!ready) throw new QueryException(", expected before aggregate function in SELECT: " + token); - /*if ( !q.supportsScalars() ) throw new QueryException( - "aggregate functions may only be used in the select clause of iterate() queries: " + token - );*/ if ( lctoken.equals("count") ) { q.addScalarType(Hibernate.INTEGER); --- 103,106 ---- *************** *** 135,138 **** --- 151,156 ---- aggregate=false; count = false; + afterNew = false; + holderClass = null; } |
From: <one...@us...> - 2003-03-01 12:15:29
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/cfg In directory sc8-pr-cvs1:/tmp/cvs-serv1150/sf/hibernate/cfg Modified Files: Binder.java Log Message: support for select new Result(....) syntax in HQL Index: Binder.java =================================================================== RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/cfg/Binder.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Binder.java 15 Feb 2003 01:00:50 -0000 1.7 --- Binder.java 1 Mar 2003 12:15:26 -0000 1.8 *************** *** 533,537 **** Type type = getTypeFromXML(subnode); model.setElementClass( model.isPrimitiveArray() ? ! ( (PrimitiveType) type ).primitiveClass() : type.getReturnedClass() ); --- 533,537 ---- Type type = getTypeFromXML(subnode); model.setElementClass( model.isPrimitiveArray() ? ! ( (PrimitiveType) type ).getPrimitiveClass() : type.getReturnedClass() ); |