Uploaded image for project: 'Cayenne'
  1. Cayenne
  2. CAY-2841

Multi column ColumnSelect with SHARED_CACHE fails after 1st select

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 4.2
    • 4.2.1, 5.0-M1
    • None
    • None

    Description

      Adding the following test case to ColumnSelectIT shows the problem:

       
      @Test

      public void testSharedCache() throws Exception {

      ColumnSelect colQry = ObjectSelect.query( Artist.class )

      .columns( Artist.ARTIST_NAME, Artist.DATE_OF_BIRTH )

      .cacheStrategy( QueryCacheStrategy.SHARED_CACHE );

      List<Object[]> result = colQry.select(context);

      assertEquals(20, result.size());

       

      // Next line fails with UnsupportedOperationException

      List<Object[]> result2 = colQry.select(context);

      assertEquals(20, result.size());

      }

       

      Stacktrace:

       
      Exception in thread "JavaFX Application Thread" java.lang.UnsupportedOperationException

      at java.base/java.util.Collections$UnmodifiableCollection.removeIf(Collections.java:1120)

      at org.apache.cayenne.access.DataDomainQueryAction$MixedConversionStrategy.convert(DataDomainQueryAction.java:818)

      at org.apache.cayenne.access.DataDomainQueryAction.interceptObjectConversion(DataDomainQueryAction.java:507)

      at org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:135)

      at org.apache.cayenne.access.DataDomain.onQueryNoFilters(DataDomain.java:570)

      at org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:819)

      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)

      at org.apache.cayenne.query.FluentSelect.select(FluentSelect.java:160)

       

      Workaround:  Add .suppressDistinct() to the query.

      Attachments

        Activity

          People

            ntimofeev Nikita Timofeev
            jurgen Jurgen Doll
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0h
                0h
                Logged:
                Time Spent - 20m
                20m