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