使用单表列映射双向OneToOne

时间:2017-02-13 13:58:03

标签: java hibernate persistence one-to-one

我有两个实体:

@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对象而不是更新它(或者全部跳过它)。为什么会这样?

0 个答案:

没有答案