我使用以下 HQL 查询来删除数据库中的特定对象。
delete from com.ranking.Footballclub where id = 1
我这样做时遇到的问题是它破坏了外键。
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The DELETE statement conflicted with the REFERENCE constraint "FK_VKLC3OLNFZIT2FCYMMKDO2ERZ4". The conflict occurred in database "sports", table "dbo.FOOTBALL_PLAYER", column 'CLUB_ID'
运动队有球员的奴隶。我可以先删除所有球员,然后再删除足球俱乐部。但足球俱乐部不仅仅拥有球员。例如,它有员工列表、调动等,他们的外键也会损坏。
对于这种情况,我正在 HQL 中寻找一些内容来删除 1 个语句中的所有从属字段。
最佳答案
您可以在数据库中显式设置ON DELETE CASCADE
,或者使用注释@org.hibernate.annotations.OnDelete
标记所需的Child实体。
它会在架构生成期间自动将删除时添加到架构中。就像-
@OneToMany(fetch = FetchType.EAGER, mappedBy = "YOUR_PARENT",
cascade = CascadeType.REMOVE)
@org.hibernate.annotations.OnDelete(
action = @org.hibernate.annotations.OnDeleteAction.CASCADE)
private List<YOUR_CHILD> CHILDS;
关于java - 删除 HQL 中带有对象的所有从站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54596432/