[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