示例用例:
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
?