[ https://issues.apache.org/jira/browse/CAY-2764?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nikita Timofeev updated CAY-2764: --------------------------------- Fix Version/s: 4.2 4.3.M1 > Split expressions do not work with DB relationships > --------------------------------------------------- > > Key: CAY-2764 > URL: https://issues.apache.org/jira/browse/CAY-2764 > Project: Cayenne > Issue Type: Bug > Affects Versions: 4.2.RC1 > Reporter: Andrus Adamchik > Priority: Major > Fix For: 4.2, 4.3.M1 > > > As a workaround for CAY-2763, I tried to use a DB expression with split > paths ("db:|dbr11.dbr12"), building the expression on my own, using > ""ExpressionFactory.matchAllExp(String, Collection)" as a template, but > replacing all ASTObjPath with ASTDbPath. This doesn't work: > {noformat} > [19/Oct/2022:10:08:30,910] bootique-http-42 WARN olD0dqQ-80000000 test_id > i.a.c.s.CayenneRuntimeExceptionMapper: Cayenne exception > org.apache.cayenne.CayenneRuntimeException: [v.4.2.RC1 Jun 03 2022 10:10:32] > Query exception. > at > org.apache.cayenne.access.DataDomainQueryAction.nextQueryException(DataDomainQueryAction.java:622) > at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:279) > at > org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:468) > at > org.apache.cayenne.access.DataDomainQueryAction.lambda$runQueryInTransaction$1(DataDomainQueryAction.java:444) > at > org.apache.cayenne.tx.DefaultTransactionManager$BaseTransactionHandler.performInTransaction(DefaultTransactionManager.java:180) > at > org.apache.cayenne.tx.DefaultTransactionManager$BaseTransactionHandler.performInNewTransaction(DefaultTransactionManager.java:152) > at > org.apache.cayenne.tx.DefaultTransactionManager$NestedTransactionHandler.handle(DefaultTransactionManager.java:95) > at > org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:62) > at > org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:40) > at > org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:443) > at > org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:127) > at org.apache.cayenne.access.DataDomain.onQueryNoFilters(DataDomain.java:570) > at > org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:819) > at > io.bootique.cayenne.v42.junit5.tester.QueryCounter.onQuery(QueryCounter.java:45) > at > org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:818) > at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:562) > at > org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:406) > at > org.apache.cayenne.util.ObjectContextQueryAction.executePostCache(ObjectContextQueryAction.java:107) > at > org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:94) > at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:960) > at org.apache.cayenne.access.DataContext.performQuery(DataContext.java:949) > at org.apache.cayenne.BaseContext.select(BaseContext.java:307) > Caused by: java.lang.IllegalStateException: Unable to resolve path: > dbr11#split0_0.dbr12 > at > org.apache.cayenne.access.translator.select.DbPathProcessor.processNormalAttribute(DbPathProcessor.java:63) > at > org.apache.cayenne.access.translator.select.PathProcessor.process(PathProcessor.java:79) > at > org.apache.cayenne.access.translator.select.PathTranslator.lambda$translatePath$1(PathTranslator.java:57) > at > java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1737) > at > org.apache.cayenne.access.translator.select.PathTranslator.translatePath(PathTranslator.java:56) > at > org.apache.cayenne.access.translator.select.PathTranslator.translatePath(PathTranslator.java:61) > at > org.apache.cayenne.access.translator.select.PathTranslator.translatePath(PathTranslator.java:65) > at > org.apache.cayenne.access.translator.select.QualifierTranslator.expressionNodeToSqlNode(QualifierTranslator.java:160) > at > org.apache.cayenne.access.translator.select.QualifierTranslator.startNode(QualifierTranslator.java:118) > at org.apache.cayenne.exp.Expression.traverse(Expression.java:568) > at org.apache.cayenne.exp.Expression.traverse(Expression.java:577) > at org.apache.cayenne.exp.Expression.traverse(Expression.java:577) > at org.apache.cayenne.exp.Expression.traverse(Expression.java:577) > at org.apache.cayenne.exp.Expression.traverse(Expression.java:557) > at > org.apache.cayenne.access.translator.select.QualifierTranslator.translate(QualifierTranslator.java:96) > at > org.apache.cayenne.access.translator.select.QualifierTranslationStage.perform(QualifierTranslationStage.java:52) > at > org.apache.cayenne.access.translator.select.DefaultSelectTranslator.translate(DefaultSelectTranslator.java:98) > at > org.apache.cayenne.access.translator.select.DefaultSelectTranslator.getSql(DefaultSelectTranslator.java:104) > at > org.apache.cayenne.access.jdbc.SelectAction.performAction(SelectAction.java:87) > at > org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:97) > at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:273) > ... 105 common frames omitted > {noformat} -- This message was sent by Atlassian Jira (v8.20.10#820010)