Repository: cayenne
Updated Branches:
  refs/heads/STABLE-4.0 ef5a86c18 -> 6c866e197


CAY-2365 SQLExec query tries to convert result set into objects

(cherry picked from commit 6c17c02)


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/6c866e19
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/6c866e19
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/6c866e19

Branch: refs/heads/STABLE-4.0
Commit: 6c866e1979bc125cb7cd7a60084466e64ce68081
Parents: ef5a86c
Author: Nikita Timofeev <stari...@gmail.com>
Authored: Thu Sep 21 17:27:05 2017 +0300
Committer: Nikita Timofeev <stari...@gmail.com>
Committed: Mon Oct 2 15:05:13 2017 +0300

----------------------------------------------------------------------
 .../org/apache/cayenne/access/ObjectResolver.java |  3 ++-
 .../java/org/apache/cayenne/query/SQLExec.java    |  1 +
 .../java/org/apache/cayenne/query/SQLExecIT.java  | 18 ++++++++++++++++++
 docs/doc/src/main/resources/RELEASE-NOTES.txt     |  1 +
 4 files changed, 22 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/6c866e19/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java 
b/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java
index af5949b..dd1620b 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java
@@ -61,7 +61,8 @@ class ObjectResolver {
 
                // sanity check
                if (descriptor == null || descriptor.getEntity() == null) {
-                       throw new CayenneRuntimeException("Set up Object entity 
or use rowFetchingQuery");
+                       // possible cause: query that is not expected to have 
result set somehow got it..
+                       throw new CayenneRuntimeException("No ClassDescriptor. 
Maybe DataRows should be fetched instead of objects.");
                }
 
                DbEntity dbEntity = descriptor.getEntity().getDbEntity();

http://git-wip-us.apache.org/repos/asf/cayenne/blob/6c866e19/cayenne-server/src/main/java/org/apache/cayenne/query/SQLExec.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLExec.java 
b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLExec.java
index d6b782f..57f7cc5 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLExec.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLExec.java
@@ -218,6 +218,7 @@ public class SQLExec extends IndirectQuery {
         SQLTemplate template = new SQLTemplate();
         template.setRoot(root);
         template.setDefaultTemplate(getSql());
+        template.setFetchingDataRows(true); // in case result set will be 
returned
 
         if (positionalParams != null) {
             template.setParamsList(positionalParams);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/6c866e19/cayenne-server/src/test/java/org/apache/cayenne/query/SQLExecIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLExecIT.java 
b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLExecIT.java
index 17f909f..6da090b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/SQLExecIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/SQLExecIT.java
@@ -19,7 +19,10 @@
 package org.apache.cayenne.query;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
+import org.apache.cayenne.DataRow;
+import org.apache.cayenne.QueryResult;
 import org.apache.cayenne.access.DataContext;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.test.jdbc.DBHelper;
@@ -61,6 +64,21 @@ public class SQLExecIT extends ServerCase {
     }
 
     @Test
+    public void test_ExecuteSelect() throws Exception {
+        int inserted = SQLExec.query("INSERT INTO ARTIST (ARTIST_ID, 
ARTIST_NAME) VALUES (1, 'a')").update(context);
+        assertEquals(1, inserted);
+
+        QueryResult result = SQLExec.query("SELECT * FROM 
ARTIST").execute(context);
+        assertEquals(2, result.size());
+        assertTrue(result.isList());
+        assertEquals(1, result.firstList().size());
+
+        DataRow row = (DataRow)result.firstList().get(0);
+        assertEquals(1L, row.get("ARTIST_ID"));
+        assertEquals("a", row.get("ARTIST_NAME"));
+    }
+
+    @Test
     public void test_ParamsArray_Multiple() throws Exception {
 
         int inserted = SQLExec.query("INSERT INTO ARTIST (ARTIST_ID, 
ARTIST_NAME) VALUES (#bind($id), #bind($name))")

http://git-wip-us.apache.org/repos/asf/cayenne/blob/6c866e19/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt 
b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 0adaf89..5b1201e 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -14,6 +14,7 @@ Date:
 Bug Fixes:
 
 CAY-2364 Wrong logging in SQLTemplate
+CAY-2365 SQLExec query tries to convert (unexpected) result set into objects
 
 ----------------------------------
 Release: 4.0.B2

Reply via email to