You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2009/02/06 05:31:18 UTC
svn commit: r741398 - in /openjpa/trunk:
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryResults.java
openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java
Author: ppoddar
Date: Fri Feb 6 04:31:17 2009
New Revision: 741398
URL: http://svn.apache.org/viewvc?rev=741398&view=rev
Log:
DB2 optimization for Query.getSingleResult()
Modified:
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryResults.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryResults.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryResults.java?rev=741398&r1=741397&r2=741398&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryResults.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/query/TestQueryResults.java Fri Feb 6 04:31:17 2009
@@ -22,6 +22,8 @@
import java.util.Iterator;
import java.util.List;
+import javax.persistence.NoResultException;
+
import org.apache.openjpa.persistence.query.common.apps.RuntimeTest1;
import org.apache.openjpa.persistence.query.common.apps.RuntimeTest2;
@@ -256,10 +258,12 @@
query =
"SELECT DISTINCT r FROM RuntimeTest1 r WHERE r.stringField = \'xxxx\'";
OpenJPAQuery q = em.createQuery(query);
- List l = q.getResultList();
- assertNotNull(
- "expecting l to be null since there is no RuntimeTest1 instance with stringfield=xxxx",
- l);
+ try {
+ Object l = q.getSingleResult();
+ fail("Expected NoResultException since there is no RuntimeTest1 instance with stringfield=xxxx");
+ } catch (NoResultException e) {
+ // good
+ }
q.closeAll();
endTx(em);
Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java?rev=741398&r1=741397&r2=741398&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/QueryImpl.java Fri Feb 6 04:31:17 2009
@@ -288,6 +288,7 @@
*/
public Object getSingleResult() {
_em.assertNotCloseInvoked();
+ setHint("openjpa.hint.OptimizeResultCount", 1); // for DB2 optimization
List result = getResultList();
if (result == null || result.isEmpty())
throw new NoResultException(_loc.get("no-result", getQueryString())
@@ -295,7 +296,12 @@
if (result.size() > 1)
throw new NonUniqueResultException(_loc.get("non-unique-result",
getQueryString(), result.size()).getMessage());
- return result.get(0);
+ try {
+ return result.get(0);
+ } catch (Exception e) {
+ throw new NoResultException(_loc.get("no-result", getQueryString())
+ .getMessage());
+ }
}
public int executeUpdate() {