[ https://issues.apache.org/jira/browse/OPENJPA-208?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Marc Prud'hommeaux reopened OPENJPA-208: ---------------------------------------- >From Abe on mailing list: That breaks the single result optimization that was >added for OPENJPA-168 when getSingleResult() is called. There was a reason >we moved the validation to the kernel. The previous code was correct. You >need to use the "hard" way of creating new exception types. > NoResultException and NonUniqueResultException are not thrown when expected > --------------------------------------------------------------------------- > > Key: OPENJPA-208 > URL: https://issues.apache.org/jira/browse/OPENJPA-208 > Project: OpenJPA > Issue Type: Bug > Components: jpa > Affects Versions: 0.9.6 > Reporter: Marc Prud'hommeaux > Assigned To: Marc Prud'hommeaux > Fix For: 0.9.7 > > > When calling Query.getSingleResult() on a query that either has no result or > multiple results, either a NoResultException and NonUniqueResultException > (respectively) should be thrown in accordance with section 3.6.1 of the JPA > spec. Instead, we appear to throw a > org.apache.openjpa.persistence.InvalidStateException: > org.apache.openjpa.persistence.InvalidStateException: The query on candidate > type "class com.sun.ts.tests.ejb30.persistence.query.apitests.Department" > with filter "select d.name from Department d where d.id > 1" was configured > to have a unique result, but more than one instance matched the query. > at org.apache.openjpa.kernel.QueryImpl.singleResult(QueryImpl.java:1282) > at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1207) > at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:982) > at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:791) > at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:761) > at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:757) > at > org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:514) > at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:225) > at > org.apache.openjpa.persistence.QueryImpl.getSingleResult(QueryImpl.java:287) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.