我有一个名为“ 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;
}
此类是存储在mongo集合中的另一个类的字段。 问题在于,spring数据正在存储Presentation类的 state 字段,就像在继承中@Transient注释被忽略一样。
答案 0 :(得分:1)
您的代码对我来说很好。
您确定使用正确的@Transient批注吗? 必须从软件包 org.springframework.data.annotation 导入。 不要使用javax持久性。
此外,请确保使用 MappingMongoConverter 。仅当您将MappingMongoConverter用作MongoTemplate的后备转换器时,基于注释的映射才有效。如果您未配置转换器,则默认情况下将使用SimpleMongoConverter,该对象仅将对象序列化到Mongo中,而无需查看任何元信息。