Java Hibernate删除不级联
我有几个实体链接如下:Java Hibernate删除不级联,java,hibernate,orm,Java,Hibernate,Orm,我有几个实体链接如下: @Entity @Table(name = "distribution_activity") public class DistributionActivity extends AbstractActivity { @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "activity", orphanRemoval = true) protected Set
@Entity
@Table(name = "distribution_activity")
public class DistributionActivity extends AbstractActivity {
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "activity", orphanRemoval = true)
protected Set<DistributionTask> tasks = new TreeSet<>();
...
}
@Repository
public interface DistributionActivityRepository extends PagingAndSortingRepository<DistributionActivity, Long> {
}
及
但是,当我删除存储时,不会为链接的任务生成delete语句,并且会引发一个涉及外键冲突的MySQLIntegrityConstraintViolationException异常
hibernate.SQL:109 - delete from store where id=? and version=?
有什么线索吗?你能在session.delete中发布代码片段吗 我不能肯定这一点,但我以前也遇到过类似的问题,涉及双向关系。简单地说,在使用双向关系时,我需要确保对象是同步的 在我看来,您希望删除DistributionTask中仍有引用的存储 例如,如果您有如下内容:
session.delete(store);
distributionTask.setStore(null);
session.save(distributionTask);
session.delete(store);
然后,尝试更改以下内容:
session.delete(store);
distributionTask.setStore(null);
session.save(distributionTask);
session.delete(store);
所以,;在处理双向关系时,需要手动控制对象的一致性
我希望有帮助。干杯,检查违反了哪个fk,验证是否还有其他东西依赖于该fk。我觉得你的代码很好,可能代码片段中没有显示额外的依赖项。谢谢Yori,异常是从DistributionTask和Store之间的FK抛出的。消息:无法删除或更新父行:外键约束失败sm.distribution\u任务,约束FK\u dr8qheutxond3mpexbuvm6s9f外键存储\u id引用存储id如何生成表?如果使用Hibernate模式生成;然后我建议删除所有表并重新生成模式。是的,使用Hibernate模式。我已经尝试过删除数据库并重新生成。。同样的问题。您能否发布成功删除DistributionActivity的代码片段,并在引发异常后立即尝试删除存储?我理解,但是DistributionActivity删除操作如何在没有任何手动操作的情况下顺利运行?
session.delete(store);
distributionTask.setStore(null);
session.save(distributionTask);
session.delete(store);