:当来自不同实体类型的ID重叠时,user @JsonIdentityInfo是否可以使用ObjectIdGenerators.PropertyGenerator?
假设我有以下XML,并希望用Jackson 2.x反序列化它:
<foo>
<id>3</id>
<name>Peter</name>
<bar>
<id>3</id>
<kind>dog</kind>
<!--belongsTo>3</belongsTo-->
</bar>
</foo>
我已经用@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
注释了Foo和Bar类。
反序列化在com.fasterxml.jackson.databind.JsonMappingException: Already had POJO for id (java.lang.String) [3]
中失败。
如果bar有ID4,那么一切都很好。
杰克逊需要对XML中的in进行反序列化吗?我假设-因为Jackson知道它将能够处理同一个id,只要它属于不同的类型就可以使用哪个实体范围。
P.S.:belongsTo引用(指向foo对象)是否设置似乎并不重要。
发布于 2014-08-07 20:50:04
你可能已经找到答案了,但万一你没有.
您应该能够使用@JsonIdentityInfo的作用域参数,即,
@JsonIdentityInfo(scope=Foo.class, property="id", generator=ObjectIdGenerators.PropertyGenerator.class)
public class Foo { ... }
和
@JsonIdentityInfo(scope=Bar.class, property="id", generator=ObjectIdGenerators.PropertyGenerator.class)
public class Bar { ... }
https://stackoverflow.com/questions/21550546
复制相似问题