[hibernate-issues] [Hibernate-JIRA] Closed: (HHH-2307) Optimize select new query calls like "select new Holder(entity, entity.something) ..." so the parser does not treat them as shallow

Max Rydahl Andersen (JIRA) noreply at atlassian.com
Wed Dec 13 12:25:04 EST 2006


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2307?page=all ]
     
Max Rydahl Andersen closed HHH-2307:
------------------------------------

    Resolution: Won't Fix

createQuery("select c as c, c.name as name from Customer c").setResultTransformer(Transformers.aliasToBean(YourClass.class));

assuming YourClass has a setC and setName bean.

note: use forum.hibernate.org 

> Optimize select new query calls like "select new Holder(entity, entity.something) ..." so the parser does not treat them as shallow
> -----------------------------------------------------------------------------------------------------------------------------------
>
>          Key: HHH-2307
>          URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2307
>      Project: Hibernate3
>         Type: New Feature

>   Components: query-hql
>     Versions: 3.2.0.ga
>  Environment: Hibernate Version: 3.2.0ga
> Database platform: Oracle 9.2, HSQLDB 1.7.3.3, and  Derby 10.2.1.6 
>     Reporter: Matt Wheeler
>     Priority: Minor

>
>
> Using the JPA implementation, and the following named query:
> @NamedQuery(name=Country.COUNTRIES_AS_SELECT_ITEMS,
> query="select new javax.faces.model.SelectItem(c, c.name) from Country c")
> Which is called from the following method:
> public List<SelectItem> getAllCountriesAsSelectItems() {
> return entityManager.createNamedQuery(Country.COUNTRIES_AS_SELECT_ITEMS).getResultList();
> }
> the following SQL is generated:
> Hibernate: select country0_.id as col_0_0_, country0_.name as col_1_0_ from Country country0_
> Hibernate: select country0_.id as id3_0_, country0_.name as name3_0_ from Country country0_ where country0_.id=?
> Hibernate: select country0_.id as id3_0_, country0_.name as name3_0_ from Country country0_ where country0_.id=?
> Hibernate: select country0_.id as id3_0_, country0_.name as name3_0_ from Country country0_ where country0_.id=?
> Hibernate: select country0_.id as id3_0_, country0_.name as name3_0_ from Country country0_ where country0_.id=?
> Hibernate: select country0_.id as id3_0_, country0_.name as name3_0_ from Country country0_ where country0_.id=?
> Assuming that we have 5 countries in the database, calling the method above would result in 6 queries.  The first query appears to get all of the ids, and the next 5 queries appear to retrieve the objects by id.
> However, if we change the query to:
> "select new javax.faces.model.SelectItem(c.name) from Country c" and only select an attribute of country, instead of an attribute of the country and the country entity as well, it will only issue 1 query
> I was just wondering if this could be optimized so that there are not n+1 queries in the new Holder(entity, enity.a) instance
> Just for reference: As per issue HHH-544 Select new n+1 queries, Gavin responded that the parser treats all select new calls as shallow, as is manifest in the above example. 

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira




More information about the hibernate-issues mailing list