首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当来自不同实体类型的ID重叠时,user @JsonIdentityInfo可以使用ObjectIdGenerators.PropertyGenerator吗?

当来自不同实体类型的ID重叠时,user @JsonIdentityInfo可以使用ObjectIdGenerators.PropertyGenerator吗?
EN

Stack Overflow用户
提问于 2014-02-04 10:58:47
回答 1查看 6.3K关注 0票数 4

:当来自不同实体类型的ID重叠时,user @JsonIdentityInfo是否可以使用ObjectIdGenerators.PropertyGenerator?

假设我有以下XML,并希望用Jackson 2.x反序列化它:

代码语言:javascript
运行
复制
<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对象)是否设置似乎并不重要。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-07 20:50:04

你可能已经找到答案了,但万一你没有.

您应该能够使用@JsonIdentityInfo的作用域参数,即,

代码语言:javascript
运行
复制
@JsonIdentityInfo(scope=Foo.class, property="id", generator=ObjectIdGenerators.PropertyGenerator.class)
public class Foo { ... }

代码语言:javascript
运行
复制
@JsonIdentityInfo(scope=Bar.class, property="id", generator=ObjectIdGenerators.PropertyGenerator.class)
public class Bar { ... }
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21550546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档