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

Mig*_* ZP 5 null merge jpa jaxb

示例用例:

class Address {

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

}
Run Code Online (Sandbox Code Playgroud)

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

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

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

任何提示?

米格尔

Jef*_*ans 0

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