我有两个实体:
@Entity
public class Device extends AbstractEntity {
@OneToOne(mappedBy = "item")
@PrimaryKeyJoinColumn
private ItemOverview itemOverview;
}
实体ItemOverview:
@Entity
public class ItemOverview extends AbstractEntity {
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "item_id")
private Item item;
}
它们都来自AbstractEntity
,其中包括以下内容:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
protected Long id;
在数据库中,两个表之间唯一存在的引用是ItemOverview
,其列为item_id
。在查看数据库时,表Item
不了解ItemOverview
。
因此,当我尝试保存包含Item(已经存在!)的新ItemOverview对象时,ItemOverview对象会成功保存。但是当我尝试再次执行它时,有效地更新ItemOverview对象(不更改Item),它会尝试INSERT Item对象而不是更新它(或者全部跳过它)。为什么会这样?