我目前正在尝试序列化我之前通过Hibernate加载的数据。要恢复类型信息,我启用了默认类型:
objectMapper.enableDefaultTyping(DefaultTyping.NON_CONCRETE_AND_ARRAYS,As.PROPERTY);
我还通过此anotation向我的实体添加了身份信息:
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class, property = "@id")
然而,当我反序列化@OneToMany
- 我的关系时,反序列化失败,因为PersistentBag此时没有会话。因为我的程序运行没有容器我无法轻松解决这个问题。
我也知道有一个事实,杰克逊有这个hibernate-datatype模块,但这并没有解决问题(我猜这个模块是用于尊重LAZY_LOADING-hibernate属性的primaliry)。
所以我想解决这个问题的方法是不要序列化PersistentBag
而是序列化ArrayList
。有没有一种简单的方法可以做到这一点,还是我必须编写自己的序列化程序(我试过但没有成功)?
答案 0 :(得分:1)
我通过一个workaroung解决了这个问题,方法是将类型信息通过注释添加到我想要序列化的类中,并删除默认的输入行:
objectMapper.enableDefaultTyping(DefaultTyping.NON_CONCRETE_AND_ARRAYS,As.PROPERTY);