java - 删除 HQL 中带有对象的所有从站

标签 java hql

我使用以下 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/

相关文章:

mysql - Grails Criteria - 同一领域的多个功能

mysql - 为多对多关系创建 HQL 查询

java - 在Docker中构建Maven项目时,所有目标文件都是root的

java - 从 2 个字符串中删除重复字符

mysql - 无法计算 Hibernate 中的记录数 :java. lang.ClassCastException : java. util.ArrayList 无法转换为 java.lang.Integer

java - Hql查询转Criteria查询

mysql - 简单的 HQL/sql 查询..需要帮助吗?

java - 在Java中读取带有重音字符的文件

java - OOP (Java) - 生成对象的最佳方式

java - java和c中的for循环有什么区别吗?