openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marc Prud'hommeaux (JIRA)" <j...@apache.org>
Subject [jira] Commented: (OPENJPA-208) NoResultException and NonUniqueResultException are not thrown when expected
Date Fri, 06 Apr 2007 22:48:32 GMT

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


Mime
View raw message