Jurgen Doll created CAY-2841:
--------------------------------
Summary: Multi column ColumnSelect with SHARED_CACHE fails after
1st select
Key: CAY-2841
URL: https://issues.apache.org/jira/browse/CAY-2841
Project: Cayenne
Issue Type: Bug
Affects Versions: 4.2
Reporter: Jurgen Doll
Adding the following test case to
{color:#000000}{color:#000000}ColumnSelectIT{color}{color} shows the problem:
{color:#000000} {color}{color:#646464}@{color}{color:#000000}Test{color}
{color:#000000} {color}{color:#7f0055}public{color}{color:#000000}
{color}{color:#7f0055}void{color}{color:#000000} testSharedCache()
{color}{color:#7f0055}throws{color}{color:#000000} Exception {{color}
{color:#000000} ColumnSelect colQry = ObjectSelect.query(
Artist.{color}{color:#7f0055}class{color}{color:#000000} ){color}
{color:#000000} .columns( Artist.ARTIST_NAME, Artist.DATE_OF_BIRTH ){color}
{color:#000000} .cacheStrategy( QueryCacheStrategy.SHARED_CACHE );{color}
{color:#000000} {color}
{color:#000000} List<Object[]> result = colQry.select(context);{color}
{color:#000000} assertEquals(20, result.size());{color}
{color:#000000} {color}{color:#3f7f5f}// Next line fails with
UnsupportedOperationException{color}
{color:#000000} List<Object[]> result2 = colQry.select(context);{color}
{color:#000000} assertEquals(20, result.size());{color}
{color:#000000} }{color}
Stacktrace:
{color:#ff0000}Exception in thread "JavaFX Application Thread"
{color}{color:#0066cc}java.lang.UnsupportedOperationException{color}
{color:#ff0000} at
java.base/java.util.Collections$UnmodifiableCollection.removeIf({color}{color:#0066cc}Collections.java:1120{color}{color:#ff0000}){color}
{color:#ff0000} at
org.apache.cayenne.access.DataDomainQueryAction$MixedConversionStrategy.convert({color}{color:#0066cc}DataDomainQueryAction.java:818{color}{color:#ff0000}){color}
{color:#ff0000} at
org.apache.cayenne.access.DataDomainQueryAction.interceptObjectConversion({color}{color:#0066cc}DataDomainQueryAction.java:507{color}{color:#ff0000}){color}
{color:#ff0000} at
org.apache.cayenne.access.DataDomainQueryAction.execute({color}{color:#0066cc}DataDomainQueryAction.java:135{color}{color:#ff0000}){color}
{color:#ff0000} at
org.apache.cayenne.access.DataDomain.onQueryNoFilters({color}{color:#0066cc}DataDomain.java:570{color}{color:#ff0000}){color}
{color:#ff0000} at
org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery({color}{color:#0066cc}DataDomain.java:819{color}{color:#ff0000}){color}
{color:#ff0000} at
org.apache.cayenne.access.DataDomain.onQuery({color}{color:#0066cc}DataDomain.java:562{color}{color:#ff0000}){color}
{color:#ff0000} at
org.apache.cayenne.util.ObjectContextQueryAction.runQuery({color}{color:#0066cc}ObjectContextQueryAction.java:406{color}{color:#ff0000}){color}
{color:#ff0000} at
org.apache.cayenne.util.ObjectContextQueryAction.executePostCache({color}{color:#0066cc}ObjectContextQueryAction.java:107{color}{color:#ff0000}){color}
{color:#ff0000} at
org.apache.cayenne.util.ObjectContextQueryAction.execute({color}{color:#0066cc}ObjectContextQueryAction.java:94{color}{color:#ff0000}){color}
{color:#ff0000} at
org.apache.cayenne.access.DataContext.onQuery({color}{color:#0066cc}DataContext.java:960{color}{color:#ff0000}){color}
{color:#ff0000} at
org.apache.cayenne.access.DataContext.performQuery({color}{color:#0066cc}DataContext.java:949{color}{color:#ff0000}){color}
{color:#ff0000} at
org.apache.cayenne.BaseContext.select({color}{color:#0066cc}BaseContext.java:307{color}{color:#ff0000}){color}
{color:#ff0000} at
org.apache.cayenne.query.FluentSelect.select({color}{color:#0066cc}FluentSelect.java:160{color}{color:#ff0000}){color}
Workaround: Add
{color:#000000}{color:#000000}.suppressDistinct(){color}{color} to the query.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)