Repository: cayenne Updated Branches: refs/heads/master 66e2727e8 -> 64dad5641
CAY-2359 EJBQL: db path in not supported in ORDER BY Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/64dad564 Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/64dad564 Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/64dad564 Branch: refs/heads/master Commit: 64dad5641cbd7297eb0b76071471ce707f1478ef Parents: 66e2727 Author: Nikita Timofeev <stari...@gmail.com> Authored: Thu Aug 31 12:53:25 2017 +0300 Committer: Nikita Timofeev <stari...@gmail.com> Committed: Thu Aug 31 12:53:25 2017 +0300 ---------------------------------------------------------------------- .../translator/ejbql/EJBQLOrderByTranslator.java | 8 +++++++- .../org/apache/cayenne/query/EJBQLQueryIT.java | 17 +++++++++++++++-- docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 + 3 files changed, 23 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cayenne/blob/64dad564/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLOrderByTranslator.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLOrderByTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLOrderByTranslator.java index 6b004f9..2183af4 100644 --- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLOrderByTranslator.java +++ b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLOrderByTranslator.java @@ -72,6 +72,12 @@ class EJBQLOrderByTranslator extends EJBQLBaseVisitor { @Override public boolean visitDbPath(EJBQLExpression expression, int finishedChildIndex) { - return super.visitDbPath(expression, finishedChildIndex); + expression.visit(new EJBQLDbPathTranslator(context) { + @Override + protected void appendMultiColumnPath(EJBQLMultiColumnOperand operand) { + throw new EJBQLException("Can't order on multi-column paths or objects"); + } + }); + return false; } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/64dad564/cayenne-server/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java ---------------------------------------------------------------------- diff --git a/cayenne-server/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java b/cayenne-server/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java index a760f3c..2c29ba5 100644 --- a/cayenne-server/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java +++ b/cayenne-server/src/test/java/org/apache/cayenne/query/EJBQLQueryIT.java @@ -665,8 +665,8 @@ public class EJBQLQueryIT extends ServerCase { registry.addCallback(LifecycleEvent.POST_LOAD, Painting.class, "postAddCallback"); // select Paintings, where one of it will be null - EJBQLQuery queryFullProduct = new EJBQLQuery("select a.paintingArray+ from Artist a order by a.artistName"); - List<Painting> result1 = context.performQuery(queryFullProduct); + EJBQLQuery query = new EJBQLQuery("select a.paintingArray+ from Artist a order by a.artistName"); + List<Painting> result1 = context.performQuery(query); assertEquals(4, result1.size()); assertNull(result1.get(3)); for(int i=0; i<3; i++) { @@ -674,4 +674,17 @@ public class EJBQLQueryIT extends ServerCase { assertTrue(result1.get(i).isPostAdded()); } } + + @Test + public void testOrderByDbPath() throws Exception { + tArtist.insert(1, "a3"); + tArtist.insert(2, "a2"); + tArtist.insert(3, "a1"); + + EJBQLQuery query = new EJBQLQuery("SELECT a FROM Artist a ORDER BY db:a.ARTIST_ID DESC"); + List<Artist> result = context.performQuery(query); + assertEquals("a1", result.get(0).getArtistName()); + assertEquals("a2", result.get(1).getArtistName()); + assertEquals("a3", result.get(2).getArtistName()); + } } http://git-wip-us.apache.org/repos/asf/cayenne/blob/64dad564/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 d80050a..fa8be5a 100644 --- a/docs/doc/src/main/resources/RELEASE-NOTES.txt +++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt @@ -39,6 +39,7 @@ CAY-2354 DbGenerator.runGenerator must commit its connection 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 ---------------------------------- Release: 4.0.B1