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

标签 jpa merge null jaxb

示例用例:

class Address {

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

}

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

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

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

任何提示?

米格尔

最佳答案

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

关于jpa - 如何在 JAXB 反序列化后在合并时忽略具有空值的 JPA ManyToOne 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14871886/

相关文章:

ruby - 在ruby中仅将两个数组的相应元素合并到一个数组中

Git:使用Kdiff3从另一个分支 merge 到一个分支

java - 为什么我的 Spring @Autowired 字段为空?

java - JPA 双向关系抛出 java.lang.StackOverflowError : null

java - oracle 中的什么数据类型会映射到 Java int?

sql - “合并”样式操作与文字值?

c# - 在输入 json 中将值 {null} 转换为类型 'System.DateTime' 时出错

android - 声明为不可为 null 的 Kotlin 属性即使已初始化值也可以为 null

java - Spring transient 注释适用于保存但不适用于选择

mongodb - 如何通过Hibernate OGM和JPA在MongoDB中创建 "unique"约束