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....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira