Hi,

I was thinking another day about your problem and tried to use native
SQL query (via createSQLQuery) everything worked fine :

List list = session.createSQLQuery("select {a.*} from T {a} order by
a.field2","a", A.class).list();

Cheers,

Andrei.


----- Original Message -----
From: William Draï <[EMAIL PROTECTED]>
Date: Wed, 29 Sep 2004 15:48:57 +0200
Subject: Re: [Hibernate] Re: Polymorphic queries, where and order by
To: [EMAIL PROTECTED]
Cc: Andrei Sereda <[EMAIL PROTECTED]>

 This is the second option I mentioned.
 By doing this I won't get elements of class A (assuming these
elements are considered having field2 = null).
 
 It would probably be clearer with a UI example :
 
 The user gets this table :
 Class      field1              field2
 A            Paris
 A            London
 B            New York     NY
 B            Los Angeles   CA
 
 He clicks on the field2 column header to sort by state, so he would expect :
 Class      field1              field2
 A            Paris
 A            London
 B            Los Angeles   CA
 B            New York     NY
 
 If the sorting is done only on elements of the class B, the user will
get this result :
 Class      field1              field2
 B            Los Angeles   CA
 B            New York     NY
 
 That seems very strange to get less results when you sort a table on
a field that on the other...
 
 


 Why don't you make "from B b order by b.field2" ? 
 Let's say we have the following (simplified) mapping : <class
name="A" table="T"> <property name="field1" type="string"/> <subclass
name="B"> <property name="field2" type="string"/> </subclass> </class>
Now we can execute any HQL query on the class A using the field1, for
example "from A a where a.field1 like 'anything%'" or "from A a order
by a.field1" The problems come when we want to use the field2 with the
same queries. Of couse in simple SQL it is possible to do select *
from T order by field2 But in HQL, "from A a order by a.field2"
rightly fails because field2 is not defined for class A. This causes
problems in sortable or filtered data tables where the user can sort
or filter by any column he wants. There is currently only two options
: - allowing to sort only on columns of class A : possible but my
users won't be really happy - "casting" the query to class B when the
user sorts on a column of class B : that means that the results count
of the query is not the same when it is sorted than when it is not ;
it completely breaks the semantics of sorting/filtering I understand
it does not follow the OO approach of HQL but it would be really
useful to have an additional syntax to allow using fields of the
subclass in HQL queries, something like "select a from A+ a order by
a.field2", or maybe an option in the Query interface like
query.setUseInheritedProperties(true). What do you think of this ?
Note : this is an extension of the JIRA HB-792 and could allow to
resolve this case in a better way William
------------------------------------------------------- This SF.net
email is sponsored by: IT Product Guide on ITManagersJournal Use IT
products in your business? Tell us what you think of them. Give us
Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out
more http://productguide.itmanagersjournal.com/guidepromo.tmpl
_______________________________________________ hibernate-devel
mailing list [EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/hibernate-devel


-------------------------------------------------------
This SF.net email is sponsored by: IT Product Guide on ITManagersJournal
Use IT products in your business? Tell us what you think of them. Give us
Your Opinions, Get Free ThinkGeek Gift Certificates! Click to find out more
http://productguide.itmanagersjournal.com/guidepromo.tmpl
_______________________________________________
hibernate-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/hibernate-devel

Reply via email to