You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Nikita Timofeev (JIRA)" <ji...@apache.org> on 2017/03/31 13:55:42 UTC

[jira] [Commented] (CAY-2210) Query cache: incorrect cache key for queries with custom value objects

    [ https://issues.apache.org/jira/browse/CAY-2210?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15950926#comment-15950926 ] 

Nikita Timofeev commented on CAY-2210:
--------------------------------------

To solve this issue (and also make it easier to support custom ValueObjects ) new interface is introduced {{ValueObjectType<V, T>}}, 
that should define rule for translating this objects into cache string. 
It is also responsible for serializing custom objects into a value that can be stored in the DB (i.e. recognized by {{ExtendedTypes}}).

To register this types {{ServerModule.contributeValueObjectTypes(Binder)}} method should be used.

Here is code for {{LocalDate}} type (as implemented in {{cayenne-java8}} module):
{code}
public class LocalDateValueType implements ValueObjectType<LocalDate, Date> {

    @Override
    public Class<Date> getTargetType() {
        return Date.class;
    }

    @Override
    public Class<LocalDate> getValueType() {
        return LocalDate.class;
    }

    @Override
    public LocalDate toJavaObject(Date value) {
        return value.toLocalDate();
    }

    @Override
    public Date fromJavaObject(LocalDate object) {
        return Date.valueOf(object);
    }

    @Override
    public String toCacheKey(LocalDate object) {
        return object.toString();
    }
}
{code}

> Query cache: incorrect cache key for queries with custom value objects
> ----------------------------------------------------------------------
>
>                 Key: CAY-2210
>                 URL: https://issues.apache.org/jira/browse/CAY-2210
>             Project: Cayenne
>          Issue Type: Bug
>            Reporter: Andrus Adamchik
>            Assignee: Nikita Timofeev
>             Fix For: 4.0.M6
>
>
> If we map any ObjAttributes of an entity to custom value types that do not have a repeatable toString, our cache keys will stop working if these types are used as qualifier parameters. 
> Per CAY-2050 ExtendedTypes now support unique toString. Perhaps we use this or a similar method for cache key generation (actually can't use ExtendedType.toString directly for the types that are trimming their display values, like arrays and Strings, so we'll need to amend that API to use for cache keys).



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)