Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate删除不级联_Java_Hibernate_Orm - Fatal编程技术网

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);