> This one fixed too. Waiting for the next one :)

Works like a charm—saved the day, thanks!

>> 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.

Yeah, I tend to be good at hitting those :)

Have a nice weekend,
- hugi


>> 
>> 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

Reply via email to