gpt4 book ai didi

java - JPA - 由于外键约束无法删除行

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:15 25 4
gpt4 key购买 nike

我正在使用 JPA2 (EclipseLink),我的实体对象如下所示:

@Entity
public class Dashboard
{
@Id
private String name;

@OneToMany(cascade = CascadeType.ALL, mappedBy="dashboard", orphanRemoval = true)
private List<LogResult> logResults;

//getter-setters
}

@Entity
public class LogResult
{
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private long id;

private Dashboard dashboard;

//getter-setters
}

我有这样的代码来删除仪表板:

EntityManager em = PersistenceInitializer.newEntityManager();
em.getTransaction().begin();
em.remove(dashboard);
em.getTransaction().commit();

但是,当我执行上面的代码时,我收到一条关于 logresult 表上的外键约束的错误消息。

为什么会这样?使用 CascadeType.ALL 不是意味着应该为我处理所有这些吗?

Update这里是控制台实际输出的错误

Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`crs`.`logresult`, CONSTRAINT `FK_LOGRESULT_DASHBOARD_NAME` FOREIGN KEY (`DASHBOARD_NAME`) REFERENCES `dashboard` (`NAME`))
Error Code: 1451

最佳答案

对于 EclipseLink 实现,请参阅 EclispeLink JPA 扩展指南:http://eclipse.org/eclipselink/documentation/2.4/jpa/extensions/toc.htm

关于java - JPA - 由于外键约束无法删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13677165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com