[hibernate-commits] Hibernate SVN: r10281 - trunk/HibernateExt/ejb/src/java/org/hibernate/ejb
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Thu Aug 17 17:29:51 EDT 2006
Author: epbernard
Date: 2006-08-17 17:29:50 -0400 (Thu, 17 Aug 2006)
New Revision: 10281
Modified:
trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/QueryImpl.java
Log:
EJB-216 getSingleResult must be implemented using list() and not uniqueResult()
Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/QueryImpl.java
===================================================================
--- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/QueryImpl.java 2006-08-17 19:36:54 UTC (rev 10280)
+++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/QueryImpl.java 2006-08-17 21:29:50 UTC (rev 10281)
@@ -11,6 +11,7 @@
import javax.persistence.TemporalType;
import static javax.persistence.TemporalType.*;
import javax.persistence.TransactionRequiredException;
+import javax.persistence.NonUniqueResultException;
import org.hibernate.CacheMode;
import org.hibernate.FlushMode;
@@ -76,13 +77,17 @@
public Object getSingleResult() {
try {
- Object result = query.uniqueResult();
-
- if ( result == null ) {
+ List result = query.list();
+ if ( result.size() == 0 ) {
em.throwPersistenceException( new NoResultException( "No entity found for query" ) );
}
-
- return result;
+ else if ( result.size() > 1 ) {
+ em.throwPersistenceException( new NonUniqueResultException( "result returns " + result.size() + " elements") );
+ }
+ else {
+ return result.get(0);
+ }
+ return null; //should never happen
}
catch (QueryExecutionRequestException he) {
throw new IllegalStateException(he);
More information about the hibernate-commits
mailing list