Yeah, I would definitely suggest to upgrade. Upgrade should be rather straightforward. Follow the UPGRADE-NOTES.txt.
Andrus On Sep 8, 2010, at 5:58 AM, Hans Pikkemaat wrote: > Hi, > > This seems to be an issue in cayenne 2.0.4. > > In 3.0 it works fine. > > There are reasons why I cannot simply upgrade to 3. > Is there a work around for this problem to get it to work in cayenne 2.0.4? > > tx > > Hans > > On 9/8/10 10:31 AM, Hans Pikkemaat wrote: >> Hi, >> >> I did not explain my test case in enough detail. >> >> I have table testhpi, testhpi2 and testhpi3. >> >> There are relationships >> >> testhpi: testhpi2Array >> testhpi: testhpi3Array >> testhpi2: testhpi3Array >> >> I use a joint prefetches >> >> >> query.addPrefetch("testhpi2Array").setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS); >> >> query.addPrefetch("testhpi2Array.testhpi3Array").setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS); >> >> At some point I run the query and get correct results. >> It runs one big query where all records are retrieved. >> >> But at some point I also retrieve the testhpi3 records through the >> teshtpi.testhpi3Array releationship. >> There is no prefetch for this one so a separate query is run and I get the >> correct results. Actually I >> get the same objects as in the big query. >> >> Now it comes. >> >> I delete a record from testhpi3 and reinsert it. >> >> If I now run the first query the query is executed and the objects are >> refreshed. >> One object is replaced with a new one as it was deleted and re-inserted. >> This is all good. >> >> But if I run the second query it is not re-executed (no prefetch?) and I get >> an old result. >> This seems logical as there is no prefetch. >> So I added the prefetch >> >> >> query.addPrefetch("testhpi2Array").setSemantics(PrefetchTreeNode.JOINT_PREFETCH_SEMANTICS); >> >> But now I get this exception >> >> Exception in thread "main" org.apache.cayenne.CayenneRuntimeException: >> [v.2.0.4 October 12 2007] Query exception. >> at >> org.apache.cayenne.access.DataDomainQueryAction.nextQueryException(DataDomainQueryAction.java:428) >> at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:280) >> at >> org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:301) >> at >> org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:60) >> at >> org.apache.cayenne.access.DataDomainQueryAction$1.transform(DataDomainQueryAction.java:273) >> at >> org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:836) >> at >> org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:270) >> at >> org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:110) >> at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:746) >> at >> org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:217) >> at >> org.apache.cayenne.access.DataContextQueryAction.execute(DataContextQueryAction.java:54) >> at org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1395) >> at >> org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1384) >> at cayenne.TryStuff.go(TryStuff.java:60) >> at cayenne.TryStuff.main(TryStuff.java:100) >> Caused by: java.lang.IllegalArgumentException: No inheritance - there must >> be only one override set >> at >> org.apache.cayenne.access.jdbc.DataRowPostProcessor.<init>(DataRowPostProcessor.java:126) >> at >> org.apache.cayenne.access.jdbc.DataRowPostProcessor.createPostProcessor(DataRowPostProcessor.java:113) >> at >> org.apache.cayenne.access.jdbc.SelectAction.performAction(SelectAction.java:84) >> at >> org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:59) >> at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:273) >> ... 13 more >> >> What am I doing wrong? >> >> tx >> >> Hans >> >> On 9/7/10 4:23 PM, Hans Pikkemaat wrote: >>> Indeed very strange. >>> >>> I'm trying to reproduce now using a simple table structure but here >>> it works fine. >>> >>> If I find something I'll let you know. >>> >>> Hans > >