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() ); |