JAXB反序列化后,如何在合并时忽略具有null值的JPA ManyToOne属性?

How to ignore a JPA ManyToOne property with null value on merge after JAXB deserialization?

提问人:Miguel ZP 提问时间:2/14/2013 最后编辑:kaya3Miguel ZP 更新时间:8/11/2021 访问量:731

问:

示例用例:

class Address {

@XMLTransient
@ManyToOne(cascade={})
private Person person;

}

在我的用例中,Address 通过 JAXB 序列化为 XML,在另一个系统中修改,从 XML 反序列化为分离的 JPA 实体,然后合并回 db (em.merge(address))。当 Person 属性被标记为@XMLTransient它从具有 null 的 XML 中恢复时。

由于所有 Address 都有一个数据库条目,并且可以通过 Id 来识别,因此我希望合并忽略 Person 属性,只保留关系的数据库值(这与级联无关)。

有没有办法告诉 JPA 在合并时忽略 Person 属性,或者我是否必须在合并之前使用@XMLAdapter将属性与相应的 Person 对象一起设置(顺便说一句,我也在所有实体上使用带有 @Version 的乐观锁定)。

有什么提示吗?

米格尔

jpa 合并 jaxb

评论

0赞 Miguel ZP 2/20/2013
XMLAdapter 真的是唯一的方法吗?

答:

0赞 Jeff Evans 3/11/2013 #1

听起来您根本不希望在合并时由 JPA 更新此关系。这是对的吗?如果是这样,您是否尝试过在 ?updatable=false@ManyToOne