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=6595&alloc_id=14396&op=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=6595&alloc_id=14396&op=click
_______________________________________________
hibernate-devel mailing list
hibernate-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hibernate-devel

Reply via email to