Данные Spring @Transient в абстрактном классе - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть шаблон стратегии, реализованный с помощью абстрактного класса, называемого presentation

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")

@JsonSubTypes({
@Type( value=PiePresentation.class, name="PIE"),
@Type( value=BarPresentation.class, name="BAR")})

public abstract class Presentation {

    String id;
    List<? extends DetailResponse> data =  new ArrayList();
    String[] variables;
    Map<String, Object> configurations;        

    @Transient
    protected ExecutionState state;
}

И два подкласса, вот один из них

public class PiePresentation extends Presentation{

    @Transient
    private List<Segment> response;

}

Эти классы являются полями другого класса, которыехранится в коллекции монго.Проблема состоит в том, что данные пружины хранят поле состояние класса Presentation, подобно тому, как при наследовании аннотация @Transient игнорируется.

1 Ответ

0 голосов
/ 12 декабря 2018

Ваш код мне подходит.

Вы уверены, что используете правильную аннотацию @Transient?Он должен быть импортирован из пакета org.springframework.data.annotation .Не используйте Javax Persistence One.

Более того, обязательно используйте MappingMongoConverter .Отображение на основе аннотаций работает только в том случае, если вы используете MappingMongoConverter в качестве резервного преобразователя для MongoTemplate.Если вы не конфигурируете конвертер, по умолчанию будет использоваться SimpleMongoConverter, который просто сериализует объекты в Mongo без какой-либо метаинформации.

...