如何在JAXB反序列化后的合并中忽略具有null值的JPAManyToOne属性



示例用例:

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

在我的用例中,Address通过JAXB序列化为XML,在另一个系统中进行修改,从XML反序列化为分离的JPA实体,然后合并回db(em.merge(Address))。由于Person属性标记为@XMLTransient,因此它是用null从XML还原的。

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

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

有什么提示吗?

Miguel

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

最新更新