Repository: cayenne Updated Branches: refs/heads/STABLE-4.0 f074a59b7 -> a07482cc3
CAY-2362 ColumnSelect: unable to use Property without type (cherry picked from commit cb3f9f4) Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/7c611dce Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/7c611dce Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/7c611dce Branch: refs/heads/STABLE-4.0 Commit: 7c611dce2bb7f7c4c6e0b7607e8e944daff51759 Parents: f074a59 Author: Nikita Timofeev <stari...@gmail.com> Authored: Mon Sep 11 12:40:55 2017 +0300 Committer: Nikita Timofeev <stari...@gmail.com> Committed: Mon Sep 11 12:55:19 2017 +0300 ---------------------------------------------------------------------- .../translator/select/DefaultSelectTranslator.java | 13 ++++++++++--- .../java/org/apache/cayenne/query/ColumnSelectIT.java | 13 +++++++++++++ docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 + 3 files changed, 24 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/7c611dce/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java index 59bdc07..39eda02 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java @@ -415,7 +415,7 @@ public class DefaultSelectTranslator extends QueryAssembler implements SelectTra int expressionType = property.getExpression().getType(); // forbid direct selection of toMany relationships columns - if((expressionType == Expression.OBJ_PATH || expressionType == Expression.DB_PATH) + if(property.getType() != null && (expressionType == Expression.OBJ_PATH || expressionType == Expression.DB_PATH) && (Collection.class.isAssignableFrom(property.getType()) || Map.class.isAssignableFrom(property.getType()))) { throw new CayenneRuntimeException("Can't directly select toMany relationship columns. " + @@ -424,7 +424,9 @@ public class DefaultSelectTranslator extends QueryAssembler implements SelectTra // evaluate ObjPath with Persistent type as toOne relations and use it as full object boolean objectProperty = expressionType == Expression.FULL_OBJECT - || (expressionType == Expression.OBJ_PATH && Persistent.class.isAssignableFrom(property.getType())); + || (property.getType() != null + && expressionType == Expression.OBJ_PATH + && Persistent.class.isAssignableFrom(property.getType())); // Qualifier Translator in case of Object Columns have side effect - // it will create required joins, that we catch with listener above. @@ -455,7 +457,12 @@ public class DefaultSelectTranslator extends QueryAssembler implements SelectTra } int type = getJdbcTypeForProperty(property); - ColumnDescriptor descriptor = new ColumnDescriptor(builder.toString(), type, property.getType().getName()); + ColumnDescriptor descriptor; + if(property.getType() != null) { + descriptor = new ColumnDescriptor(builder.toString(), type, property.getType().getName()); + } else { + descriptor = new ColumnDescriptor(builder.toString(), type); + } descriptor.setDataRowKey(alias); descriptor.setIsExpression(true); columns.add(descriptor); http://git-wip-us.apache.org/repos/asf/cayenne/blob/7c611dce/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java index d4798c9..25fb80b 100644 --- a/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java +++ b/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java @@ -973,4 +973,17 @@ public class ColumnSelectIT extends ServerCase { .select(context); assertEquals(22, result.size()); } + + /* + * Test deprecated property constructor + */ + + @Test + @SuppressWarnings("deprecation") + public void testDeprecateConstructor() { + Property<String> property = new Property<>("artistName"); + List<String> names = ObjectSelect.columnQuery(Artist.class, property).select(context); + assertEquals(20, names.size()); + } + } http://git-wip-us.apache.org/repos/asf/cayenne/blob/7c611dce/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 1639dd7..bd5820f 100644 --- a/docs/doc/src/main/resources/RELEASE-NOTES.txt +++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt @@ -27,6 +27,7 @@ CAY-2356 EJBQL: Incorrect COUNT() on outer joined table CAY-2357 Generic select queries silently convert result to nulls if no PK column found CAY-2358 NPE when callbacks invoked on null objects CAY-2359 EJBQL: db path in not supported in ORDER BY +CAY-2362 ColumnSelect: unable to use Property without type ---------------------------------- Release: 4.0.B1