[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-3313) Criteria + Property Projection + LockMode causes a NPE

Christian Nelson (JIRA) noreply at atlassian.com
Tue Aug 5 22:02:30 EDT 2008


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-3313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_30807 ] 

Christian Nelson commented on HHH-3313:
---------------------------------------

I've upgraded the sample application (in svn only) to use the latest 3.3.0.CR2 release to see if this problem may have been resolved as a side effect (wishful thinking I know).  As expected, the problem still exists.

> Criteria + Property Projection + LockMode causes a NPE
> ------------------------------------------------------
>
>                 Key: HHH-3313
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-3313
>             Project: Hibernate3
>          Issue Type: Bug
>          Components: query-criteria
>    Affects Versions: 3.2.6
>         Environment: Hibernate 3.2.6.ga, PostgreSQL 8.1
>            Reporter: Christian Nelson
>         Attachments: hibernate-criteria-projection-lockmode-project.zip
>
>
> In converting a working HQL query to the Criteria API, we stumbled upon what looks very much like a bug.  When combining a criteria with a projection and setting the lockmode (to read or upgrade), hibernate throws a NPE down in CriteriaLoader.applyLocks().
> Here's a simplified snippet of the criteria that results in the exception:
>         Criteria criteria = session.createCriteria(Article.class).add(Restrictions.ilike("title", "%frozen%"));
>         criteria.createCriteria("moderation", "m").add(Restrictions.eq("approved", true));
>         criteria.setProjection(Projections.property("moderation"));
>         criteria.setLockMode("m", LockMode.UPGRADE);
>         assertions(criteria.list());
> [The test case includes other attempts at building a similar criteria using different approaches.]
> And here's the stack trace:
>     java.lang.NullPointerException
>         at org.hibernate.loader.criteria.CriteriaLoader.applyLocks(CriteriaLoader.java:131)
>         at org.hibernate.loader.Loader.preprocessSQL(Loader.java:201)
>         at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1538)
>         at org.hibernate.loader.Loader.doQuery(Loader.java:673)
>         at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
>         at org.hibernate.loader.Loader.doList(Loader.java:2213)
>         at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
>         at org.hibernate.loader.Loader.list(Loader.java:2099)
>         at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
>         at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
>         at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
> There's already some talk on the web about this problem:
> * http://forum.hibernate.org/viewtopic.php?t=955525
> * http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=78&t=003636
> I've created a simplified test case which includes the HQL version of the query (works), the Criteria version without lockmode (works), and then 3 failing tests illustrating the problem.  The attached zip contains the test case and supporting files. The source code for the test case is also available via anonymous svn access (http://svn.carbonfive.com/public/christian/hibernate-criteria-projection-lockmode/trunk).  The test will run out of the box using maven against an h2database in-memory database with no setup.
> This combination of features doesn't seem that obscure so I'd expect it to work, or at the very least, report that it is not supported in a more graceful manner.

-- 
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