[ 
https://issues.apache.org/jira/browse/OPENJPA-208?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12487352
 ] 

Marc Prud'hommeaux commented on OPENJPA-208:
--------------------------------------------

The change to OPENJPA-168 seems to have been done to make the validation of a 
single result a little cleaner by having the kernel query perform the 
validation that there is a single result. However, this meant that we could 
only do generic exception translation, and so were no longer throwing a 
NoResultException or NonUniqueResultException. We could fix this by introducing 
a could new kernel exceptions or exception types, but it might just be easier 
to revert to having the validation done in the persistence QueryImpl.

Any objections to fixing this the easy way?

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

Reply via email to