删除实体时我该怎么办?MySQLIntegrityConstraintViolationException

安德里亚·T

我正在寻求帮助,因为当我尝试删除具有OneToMany关系的实体时,在使用列表加载页面时出现此错误:

MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败

我当然知道这与级联删除孩子有关,但是我不知道我在哪里做得不好。

相对于与孩子的关系的父实体部分:

@Entity
@Table(name="PARENT")
public class Parent implements Serializable {
...
@OneToMany (mappedBy = "parent", orphanRemoval = true, cascade={CascadeType.ALL}, targetEntity = Children.class)
@JoinColumn(name = "parent_id")
private List <Children> children;
...
}

相对于与父级关系的子级实体部分:

@Entity
@Table(name = "CHILDREN")
public class Children implements Serializable {
...
@ManyToOne(targetEntity = Parent.class, cascade = CascadeType.ALL)
@JoinColumn
private Country country;

JSF按钮删除实体:

<p:button onmouseup="#{parentBean.remove(parent)}" value="Delete" />

豆角,扁豆:

getEntityManager().remove(getEntityManager().merge(parent));

例外:

Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`control`.`children`, CONSTRAINT `FK_CHILDREN_COUNTRY_ID` FOREIGN KEY (`COUNTRY_ID`) REFERENCES `countries` (`ID`))
Error Code: 1451
Call: DELETE FROM PARENT WHERE (ID = ?)
bind => [1 parameter bound]
Query: DeleteObjectQuery(com.frys.model.Country[ id=2 ])
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl$1.handleException(EntityManagerSetupImpl.java:692)
at org.eclipse.persistence.transaction.AbstractSynchronizationListener.handleException(AbstractSynchronizationListener.java:275)
at org.eclipse.persistence.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:170)
at org.eclipse.persistence.transaction.JTASynchronizationListener.beforeCompletion(JTASynchronizationListener.java:68)
at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:452)
... 86 more

先感谢您!

指令

问题是上面的代码中CascadeType.DELETE隐含的内容CascadeType.ALL适用于EntityManager中的对象,但不一定适用于数据库。配置JPA以生成ddl文件。看一下ddl文件,您会发现文件ON DELETE CASCADE没有添加到约束中。添加ON DELETE CASCADEddl文件中的实际SQL ,然后从ddl更新数据库架构。这将解决您的问题。

链接显示了如何在MySQL中使用ON DELETE CASCADEfor CONSTRAINT您在约束上执行此操作。您也可以在CREATE TABLEorALTER TABLE语句中执行此操作。JPA可能会在ALTER TABLE语句中创建约束只需添加ON DELETE CASCADE到该语句。

请注意,某些JPA实现者确实提供了用于此功能的方法,因此使用后果自负。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

删除实体时我该怎么办?MySQLIntegrityConstraintViolationException

来自分类Dev

我该怎么办呢?该怎么办?

来自分类Dev

使用xpath抓取时,我该怎么办?

来自分类Dev

使用ping时收到DUP。我该怎么办?

来自分类Dev

从外部删除实例该怎么办?

来自分类Dev

Raspberry Pi我该怎么办?

来自分类Dev

意外升级,我该怎么办?

来自分类Dev

我该怎么办?教义关系

来自分类Dev

日期计数,我该怎么办?

来自分类Dev

屏幕关闭时该怎么办?

来自分类Dev

UPS过载时该怎么办?

来自分类Dev

桌面冻结时该怎么办?

来自分类Dev

当列是数组时,该怎么办?

来自分类Dev

在遍历数组时从数组中删除项目是否会打破循环,我该怎么办?

来自分类Dev

如何删除文章中的图像。OnetoOne关联。我该怎么办?

来自分类Dev

对于隐藏而不是删除网站上的图像,我该怎么办?

来自分类Dev

PHP删除了字符串中单词的后续出现,我该怎么办?

来自分类Dev

如果安装点未稀疏,删除或隐藏了我的磁盘空间,该怎么办?

来自分类Dev

不小心删除了apache2.conf,我该怎么办?

来自分类Dev

从cocoapod项目中仅删除一个库,我该怎么办?

来自分类Dev

当DefinitelyTyped类型定义用于比我想要的新版本时该怎么办?

来自分类Dev

如果HTML不是编程语言,那么我在执行HTML代码时该怎么办?

来自分类Dev

在MPI中未知发送消息的数量时,我该怎么办?

来自分类Dev

当有人取消引用我的end()迭代器时该怎么办?

来自分类Dev

分配新向量时std :: bad_alloc-我该怎么办

来自分类Dev

安装下载的更新时,Update Manager卡住(但未冻结)。我该怎么办?

来自分类Dev

当我在Python或IPython控制台中时,返回输出该怎么办?

来自分类Dev

当我从相机捕获图像时,图像质量下降了吗?该怎么办?

来自分类Dev

当我使用带有重音字母的std :: isupper()时该怎么办

Related 相关文章

  1. 1

    删除实体时我该怎么办?MySQLIntegrityConstraintViolationException

  2. 2

    我该怎么办呢?该怎么办?

  3. 3

    使用xpath抓取时,我该怎么办?

  4. 4

    使用ping时收到DUP。我该怎么办?

  5. 5

    从外部删除实例该怎么办?

  6. 6

    Raspberry Pi我该怎么办?

  7. 7

    意外升级,我该怎么办?

  8. 8

    我该怎么办?教义关系

  9. 9

    日期计数,我该怎么办?

  10. 10

    屏幕关闭时该怎么办?

  11. 11

    UPS过载时该怎么办?

  12. 12

    桌面冻结时该怎么办?

  13. 13

    当列是数组时,该怎么办?

  14. 14

    在遍历数组时从数组中删除项目是否会打破循环,我该怎么办?

  15. 15

    如何删除文章中的图像。OnetoOne关联。我该怎么办?

  16. 16

    对于隐藏而不是删除网站上的图像,我该怎么办?

  17. 17

    PHP删除了字符串中单词的后续出现,我该怎么办?

  18. 18

    如果安装点未稀疏,删除或隐藏了我的磁盘空间,该怎么办?

  19. 19

    不小心删除了apache2.conf,我该怎么办?

  20. 20

    从cocoapod项目中仅删除一个库,我该怎么办?

  21. 21

    当DefinitelyTyped类型定义用于比我想要的新版本时该怎么办?

  22. 22

    如果HTML不是编程语言,那么我在执行HTML代码时该怎么办?

  23. 23

    在MPI中未知发送消息的数量时,我该怎么办?

  24. 24

    当有人取消引用我的end()迭代器时该怎么办?

  25. 25

    分配新向量时std :: bad_alloc-我该怎么办

  26. 26

    安装下载的更新时,Update Manager卡住(但未冻结)。我该怎么办?

  27. 27

    当我在Python或IPython控制台中时,返回输出该怎么办?

  28. 28

    当我从相机捕获图像时,图像质量下降了吗?该怎么办?

  29. 29

    当我使用带有重音字母的std :: isupper()时该怎么办

热门标签

归档