This one fixed too. Waiting for the next one :) On Fri, May 26, 2017 at 4:03 PM, Nikita Timofeev <ntimof...@objectstyle.com> wrote: > Yes, that's right :) I see this now in my test too, code path that I > don't like (and that is hard to step on) bites again. > > On Fri, May 26, 2017 at 3:53 PM, Hugi Thordarson <h...@karlmenn.is> wrote: >> That's always fun :). BarCode.CODE is a LONGVARCHAR mapped to a TEXT-column >> in a MySQL db. >> >> - hugi >> >> >>> On 26 May 2017, at 12:48, Nikita Timofeev <ntimof...@objectstyle.com> wrote: >>> >>> Yes, fix definitely affected this query, but seems that it's not broke >>> something, but rather revealed some other hidden bug. >>> What is the type of DbAttribute mapped on BarCode.CODE property? >>> >>> On Fri, May 26, 2017 at 3:37 PM, Hugi Thordarson <h...@karlmenn.is> wrote: >>>> Is it possible the fix broke something else? I'm now getting exceptions >>>> for queries that worked this morning. I only see it happening in queries >>>> where i'm traversing to-many relationships in the where-part of the query >>>> though. This method: >>>> >>>> public String number() { >>>> return ObjectSelect >>>> .query( BarCode.class ) >>>> .column( BarCode.CODE ) >>>> .where( BarCode.BAR_CODE_SKUS.dot( BarCodeSku.SKU >>>> ).eq( this ) ) >>>> .selectFirst( getObjectContext() ); >>>> } >>>> >>>> (BarCode.CODE is a string) >>>> >>>> Now causes this error: >>>> >>>> java.lang.ClassCastException: java.lang.String cannot be cast to >>>> org.apache.cayenne.DataRow >>>> at >>>> org.apache.cayenne.access.jdbc.DistinctResultIterator.checkNextUniqueRow(DistinctResultIterator.java:147) >>>> at >>>> org.apache.cayenne.access.jdbc.DistinctResultIterator.checkNextRow(DistinctResultIterator.java:136) >>>> at >>>> org.apache.cayenne.access.jdbc.DistinctResultIterator.<init>(DistinctResultIterator.java:74) >>>> at >>>> org.apache.cayenne.access.jdbc.SelectAction.forSuppressedDistinct(SelectAction.java:236) >>>> at >>>> org.apache.cayenne.access.jdbc.SelectAction.performAction(SelectAction.java:121) >>>> at >>>> org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:97) >>>> at >>>> org.apache.cayenne.access.DataNode.performQueries(DataNode.java:293) >>>> at >>>> org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:471) >>>> at >>>> org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:72) >>>> at >>>> org.apache.cayenne.access.DataDomainQueryAction$2.perform(DataDomainQueryAction.java:446) >>>> at >>>> org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:87) >>>> at >>>> org.apache.cayenne.tx.DefaultTransactionManager.performInLocalTransaction(DefaultTransactionManager.java:59) >>>> at >>>> org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:52) >>>> 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:122) >>>> at >>>> org.apache.cayenne.access.DataDomain.onQueryNoFilters(DataDomain.java:564) >>>> at >>>> org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:748) >>>> at >>>> org.apache.cayenne.commitlog.CommitLogFilter.onQuery(CommitLogFilter.java:61) >>>> at >>>> org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:748) >>>> at >>>> org.apache.cayenne.tx.TransactionFilter.onQuery(TransactionFilter.java:49) >>>> at >>>> org.apache.cayenne.access.DataDomain$DataDomainQueryFilterChain.onQuery(DataDomain.java:748) >>>> at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:556) >>>> at >>>> org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:382) >>>> 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:965) >>>> at >>>> org.apache.cayenne.access.DataContext.performQuery(DataContext.java:954) >>>> at org.apache.cayenne.BaseContext.select(BaseContext.java:307) >>>> at org.apache.cayenne.BaseContext.selectFirst(BaseContext.java:331) >>>> at >>>> org.apache.cayenne.query.ColumnSelect.selectFirst(ColumnSelect.java:660) >>>> at strimillinn.core.model.Sku.number(Sku.java:54) >>>> >>>> Cheers, >>>> - hugi >>>> >>>> >>>> >>>>> On 26 May 2017, at 11:56, Nikita Timofeev <ntimof...@objectstyle.com> >>>>> wrote: >>>>> >>>>> Hi again, >>>>> >>>>> I've pushed fix for this issue. >>>>> https://github.com/apache/cayenne/commit/eac1f31073045fec6eafef3f3fd6cb05f0201994 >>>>> >>>>> On Wed, May 24, 2017 at 7:03 PM, Hugi Thordarson <h...@karlmenn.is> wrote: >>>>>> Thanks Nikita, at least I know I'm not doing anything wrong then :) >>>>>> >>>>>> - hugi >>>>>> >>>>>> >>>>>>> On 24 May 2017, at 14:52, Nikita Timofeev <ntimof...@objectstyle.com> >>>>>>> wrote: >>>>>>> >>>>>>> Hi Hugi, >>>>>>> >>>>>>> Seems like custom types are broken in ColumnSelect, I see this bug in >>>>>>> my test too. >>>>>>> >>>>>>> On Wed, May 24, 2017 at 5:34 PM, Hugi Thordarson <h...@karlmenn.is> >>>>>>> wrote: >>>>>>>> I'm using today's version of 4.0.M6-SNAPSHOT. Always living on the >>>>>>>> edge :) >>>>>>>> >>>>>>>> - hugi >>>>>>>> >>>>>>>> >>>>>>>>> On 24 May 2017, at 14:31, Andrus Adamchik <and...@objectstyle.org> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>> Or .. if you already have cayenne-java8 in your app, and the problem >>>>>>>>> is specific to just the column select query, you may also need to >>>>>>>>> switch to M6. IIRC there were some issues in M5 with the behavior >>>>>>>>> that you describe. >>>>>>>>> >>>>>>>>> Andrus >>>>>>>>> >>>>>>>>>> On May 24, 2017, at 5:28 PM, Andrus Adamchik >>>>>>>>>> <and...@objectstyle.org> wrote: >>>>>>>>>> >>>>>>>>>> You need to add cayenne-java8 dependency. >>>>>>>>>> >>>>>>>>>> Unfortunately the fallback behavior (treat unknown class as >>>>>>>>>> Serializable) is extremely confusing. Though I think we log some >>>>>>>>>> warnings before doing that. >>>>>>>>>> >>>>>>>>>> ANdrus >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> On May 24, 2017, at 5:20 PM, Hugi Thordarson <h...@karlmenn.is> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>> Hi all, >>>>>>>>>>> if I try to fetch Java 8 date objects using ColumnSelect, the >>>>>>>>>>> values get returned as byte arrays instead of actual objects. >>>>>>>>>>> Example: >>>>>>>>>>> >>>>>>>>>>> LocalDateTime creationDate = ObjectSelect >>>>>>>>>>> .query( User.class ) >>>>>>>>>>> .column( User.CREATION_DATE ) >>>>>>>>>>> .selectFirst( Jambalaya.newContext() ); >>>>>>>>>>> >>>>>>>>>>> User.creationDate() is a LocalDateTime—but the fetch will fail >>>>>>>>>>> since the returned value is a byte array. >>>>>>>>>>> >>>>>>>>>>> Bug? >>>>>>>>>>> >>>>>>>>>>> Cheers, >>>>>>>>>>> - hugi >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Best regards, >>>>> Nikita Timofeev >>>> >>> >>> >>> >>> -- >>> Best regards, >>> Nikita Timofeev >> > > > > -- > Best regards, > Nikita Timofeev
-- Best regards, Nikita Timofeev