Java JPA读取但不写入/更新属性
我有一个JPA实体,它有一个按以下方式声明的属性Java JPA读取但不写入/更新属性,java,hibernate,jpa,jpa-2.0,Java,Hibernate,Jpa,Jpa 2.0,我有一个JPA实体,它有一个按以下方式声明的属性 @OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.EAGER) @JoinColumn(name = "userId", referencedColumnName = "id", insertable = false, updatable = false) private UserBare user; (UserBare是我创建的一个虚拟实体,它是用户obj的一个
@OneToOne(cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
@JoinColumn(name = "userId", referencedColumnName = "id", insertable = false, updatable = false)
private UserBare user;
(UserBare是我创建的一个虚拟实体,它是用户obj的一个简化版本,因为我需要一些日期,并不是所有的用户obj都可用于此实体。有没有更好的方法来实现这一点
这是一个方便的属性,我使用它只是在读取此实体时使userBare对象可用于此实体。但当我实际写入此实体时,它似乎在数据库中创建了新的“user”条目(而不是更新)。我已经有insertable=false,Updateable=false,但它仍会写入数据库。我尝试删除CascadeType声明,但这会引发错误
这是添加不需要的行(最后3行)后的数据库快照。我还注意到,删除原始实体并没有删除这三个不需要的行。因此我猜JPA正在存储它们,但对原始实体的引用是完整的
我的理解是,“OneToOne”的意思是“OneToOne”,如果您不将Optional设置为true,则不包括“OneToZero”的可能性:
@OneToOne(optional=true)
但是只是一个猜测。我不确定只是好奇-如果你的UserBare只是一个界面,而你的“重”用户正在实现它,会发生什么?