【发布时间】:2015-09-14 10:06:56
【问题描述】:
我想创建一个@OneToOne 映射,其中根实体通过外键约束引用子实体。
@Entity
public class MainEntity {
@Id private long id;
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "fk_sheet_id", foreignKey = @ForeignKey(name = "fk_sheet"))
private SheetEntity sheet;
}
@Entity
public class Sheet {
@Id private long id;
//...
@OneToOne(mappedBy = "sheet")
private GiataHotelEntity mainEntity;
}
问题:当我转到数据库并在MainEntity 上选择truncate cascade 时,关联的@OneToOne Sheet 被没有删除。
如果我反转映射并使Sheet 成为拥有方,那么这个级联删除将起作用!但我希望 MainEntity 成为拥有方。
我在这里可能做错了什么?
【问题讨论】:
-
您的数据库中是否存在从 Sheet 到 MainEntity 的外键?
-
是的,“mainEntity”有一个
fk_sheet_id列,其键为Sheet实体。但是当我删除 MainEntity 时,工作表数据仍然存在。 -
但是Sheet没有fk_mainentity_id?
-
不,工作表没有外键!
-
在您投票的答案下阅读我的评论。此外,您可能会在我的回答中发现一些有用的信息。
标签: java database hibernate postgresql