gpt4 book ai didi

java - 如何级联删除条目而不级联为多对多关系

转载 作者:行者123 更新时间:2023-12-01 16:00:33 27 4
gpt4 key购买 nike

我有一段代码,它通过首先级联删除它,然后用新对象替换它来“更新”数据库中的条目,因为我在尝试正常更新它时遇到了很多问题。这个黑客工作得很好,直到我开始使用一些多对多关系。这是带来问题的关系:

@ManyToMany(cascade = CascadeType.ALL)
private Set<RefProg> refProgSet = new HashSet<RefProg>();

它驻留在名为 PDBEntry 的域对象中。 RefProg 域对象具有以下代码段:

@ManyToMany(mappedBy = "refProgSet")
private Set<PDBEntry> pdbEntrySet = new HashSet<PDBEntry>();

现在您可能已经猜到了,当您尝试删除 PDBEntry 时,会出现严重错误。假设 PDBEntry“ENT1”具有 RefProg“REFPROG1”,并且 PDBEntry“ENT2”具有相同的 RefProg。现在,当我尝试级联删除“ENT1”时,它也会尝试删除“REFPROG1”,这应该是不可能的,因为它仍然链接到“ENT2”。但是,如果我不将 RefProg 设置为级联删除,它不会删除 Hibernate 为我构建的可连接中的相关行,从而给我一个错误,指出它无法删除 PDBEntry。由于 Hibernate 正在制作可连接的东西,所以我似乎无法访问它。我是否太固执了,我应该使用更新而不是在输入新条目之前先尝试删除条目,还是有其他方法可以实现此目的?也许有一些注释可以使级联进入可连接状态而不再进一步?有想法吗?

最佳答案

在调用删除 PDBEntry 之前,您是否尝试过从 pdb EntrySet 中删除 PDB Entry 和/或反之亦然?

关于java - 如何级联删除条目而不级联为多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4052796/

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