我的情况:我有一个用于 对象 的数据库表和一个用于 对象的额外信息的单独数据库表即可。 对象 由自动生成的序列ID标识, 对象的额外信息 与其具有相同的值&# 39; s PK,所以有一对一的关系。
我在 对象 的实例中映射了 对象的额外信息 。它适用于阅读,但我在尝试将新记录保存到数据库时遇到了困难。
对象 侧引用如下所示:
@JoinColumn(name = "object_id", referencedColumnName = "object_id")
@OneToOne(cascade = CascadeType.ALL)
private ObjectExtraInfo detail;
对象的额外信息 中的
PK列:
@Id
@NotNull
@Column(name = "object_id")
private Integer objectId;
我正在使用EntityManger.merge()
,因为引用了其他几个数据库表,EntityManager.persist()
会强迫我处理数据库实体的propper标识。
要保存新的 对象 记录是没有问题的,但我可以使用附加的 对象的附加信息做得最好 是它出现在DB中,零为PK。新 对象 记录的自动生成值未分发到 对象的附加信息 。并且在PK之后不可能改变它。
我很确定我的JPA注释搞砸了,特别是在 对象的额外信息 方面。但到目前为止,我无法找到正确的方法。