Fantastic - That is exactly what I want :)
I'd also like to see this :
map creation from specified key and value columns (either key,value or
aliased)
select new keyedmap ( order.id as key, order as value) from Order order
select new keyedmap ( order.id, order ) from Order order
However this doesn't fit the [List find(String] interface of session
A soloution may be to return a list of 1 element that contains the map
plugable loaders
Allow user defined loaders (or object factories) rather than hibernate
creating the instances
i.e.
Configuration.registerLoader('customLoader', new CustomLoader());
select load customLoader( order.id as id, order.key as key, order ) from ...
interface Loader {
Object load(String[] aliases, Object[] aliasedValues, Object[]
positionalValues)
}
Hibernate would call load([id, name], [1, SFG34AF], [orderInstance])
for each row
JavaBean construction from aliased properties
class OrderView {
long id,
Customer customer
// getters and setters
}
select new OrderView(o.id as id , o.customer as customer) from Order o
The loader will create a new OrderView instance from the default
constructor, and set the properties using the alias names
Could have plugable loaders - JavaBeanPropertyLoader, FieldAccessLoader
etc.. issue : could these be specifyable per query ? if so, how ?
This could probably be implemented with the custom loader idea above
select load javaBeanLoader( 'com.whatever.OrderView' as class, o.id as id,
o.customer as customer ) from Order o
however this syntax isn't purfect.
final thoughts
After writing this, some of this can probably be supported outside of
hibernate by getting hibernate to return a list of maps and transforming
this using a custom transformer. One advantage of getting hibernate to do
it would be the creation of less garbage.
Just my 2c worth.
Cameron
-Original Message-
From: [EMAIL PROTECTED] [mailto:hibernate-devel-
[EMAIL PROTECTED] On Behalf Of Gavin King
Sent: Tuesday, 5 April 2005 2:07 PM
To: 'hibernate-devel@lists.sourceforge.net'
Subject: [Hibernate] New HQL features in CVS
select foo.bar as fb, foo.x as fx from Foo foo ( use together with
Query.getReturnAliases() )
select new list(foo.bar, foo.x) from Foo foo
select new map( foo.bar as fb, foo.x as fx) from Foo foo
Enjoy!
--
Gavin King
+61 410 534 454
+1 404 822 8349
callto://gavinking
Hibernate
[EMAIL PROTECTED]
http://hibernate.org
JBoss Inc
[EMAIL PROTECTED]
http://jboss.com
---
SF email is sponsored by - The IT Product Guide
Read honest candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595alloc_id=14396op=click
___
hibernate-devel mailing list
hibernate-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hibernate-devel
---
SF email is sponsored by - The IT Product Guide
Read honest candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595alloc_id=14396op=click
___
hibernate-devel mailing list
hibernate-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hibernate-devel