Как сделать Java опциональной сериализуемой в Lagom?

Я использую Lagom framework с Java. У меня есть класс модели, который использует необязательный параметр в аргументе конструктора. У меня есть только один постоянный объект, основанный на этом классе модели, и у меня есть тесты объектов (с использованием PersistentEntityTestDriver) для этого объекта. Проблема в том, что все тесты сущностей терпят неудачу с этой ошибкой -

java.lang.AssertionError:

Ожидал :[]

Фактический: [[класс java.util.Optional не сериализуем, нет настроенных привязок сериализации для класса [com.sp.User]]

Пример класса пользователя —

class User {

    public final UUID id;
    public final ZonedDateTime date;

    @JsonCreator
    public User(@JsonProperty("id") UUID userId,
                @JsonProperty("address") Optional<ZonedDateTime> date) {
        this.id = id;
        this.date = createdOn.orElse(getUtcDateTime());
    }

}

Как я могу настроить свою службу для сериализации необязательно.


person konghoho    schedule 11.11.2017    source источник
comment
сериализация не подразумевается службой   -  person Roman C    schedule 11.11.2017
comment
Я решил это, реализовав класс модели с интерфейсом Jsonable (com.lightbend.lagom.serialization.Jsonable). Реализация этого интерфейса означает присвоение ему более высокого приоритета, чем стандартному интерфейсу java Serializable. Таким образом, akka будет использовать свой собственный сериализатор для необязательных, а не сериализацию Java по умолчанию. Документ — (lagomframework.com/documentation/1.0.x/java/api/index.html?com/)   -  person konghoho    schedule 14.11.2017


Ответы (1)


Какую версию Джексона вы используете? Я думаю, вам нужно как минимум 2.8.5, который добавил сериализатор для необязательного класса.

person dkatzel    schedule 12.11.2017