我遇到了一个问题,我的头脑不清醒。我真的希望有人能帮忙。
因为我的数据模型代表编程对象,所以这可能会得到一些元数据。我有三个实体:程序、Clazz和方法。类可以有多个方法,并且偶尔会继承一些其他方法(从其他类继承)。
@Entity
public class Program {
@OneToMany(mappedBy="program", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@OrderBy("name ASC")
private Set<Clazz> clazzes = new TreeSet<Clazz>();
}
@Entity
public class Clazz {
@ManyToOne
private Program program;
@OneToMany(mappedBy="clazz", fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@OrderBy("name ASC")
private Set<Method> methods = new TreeSet<Method>();
@ManyToMany(fetch=FetchType.LAZY, mappedBy="inheritedBy")
@OrderBy("name ASC")
private Set<Method> inheritedMethods = new TreeSet<Method>();
@PreRemove
private void tearDown() {
inheritedMethods.clear();
}
}
@Entity @Table(name="sf_method")
public class Method {
@ManyToOne(html" target="_blank">optional=true)
private Clazz clazz;
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name = "sf_method_inherited_by_class",
joinColumns = { @JoinColumn(name = "sf_method_inherited_by_class") },
inverseJoinColumns = { @JoinColumn(name = "sf_class_inherits_method") }
)
private Set<Clazz> inheritedBy = new HashSet<Clazz>();
@PreRemove
public void tearDown() {
inheritedBy.clear();
}
}
我需要做的是删除一个程序,包括它所有的类和方法。我使用Spring-JPA存储库,所以我的代码是:
@Autowired ProgramRepository programs;
@Transactional(readOnly=false)
public void forceDelete(Program p) {
Set<Clazz> myClasses = p.getClazzes();
for (Clazz c : myClasses) {
logger.info("Clazz " + c.getName());
for (Method m : c.getMethods()) {
m.setClazz(null);
methods.save(m);
}
}
programs.delete(p);
}
删除代码仅在某些情况下有效。有时我会出现以下错误。
SqlExceptionHelper-完整性约束冲突:外键没有动作;FKIBMDD2FV8TNJAF4VJTOEICS73表:SF_METHODAbstractBatchImpl-HHH000010:在批发布时,它仍然包含JDBC语句
有什么想法吗?我花了这么多时间在这件事上,每次尝试解决问题都失败了。我做错了什么?
在这里,您试图删除父级,而不删除具有引用父级的外键的子级。
在这里,在删除p之前,您必须删除p的子对象。您可以通过以下方式获得:p.getClazzes();
同样,在删除Clazz之前,您必须删除它的孩子(在本例中,方法),如上所述...
无法删除或更新父行:外键约束失败(.,constraint外键()引用()) 文件实体代码: 扩展实体代码:
在MySQL中,我想删除一个表。 我尝试了很多方法,但我总是得到一个错误,即不能删除名为的表。这是我得到的错误: #1217-无法删除或更新父行:外键约束失败 我怎么放下这张桌子?
我正在尝试运行通过此迁移创建的表的迁移: 我正在尝试添加一个run a迁移,其中我正在向表中添加一个外键: 但是,当我尝试运行迁移时,却出现了一个错误: [照亮\Database\QueryException] SQLState[23000]:完整性约束冲突:1452无法添加或更新子行:外键约束失败( .,constraint外键()引用删除级联时的()引用()(SQL:alter [PDOExc
我的迁移: 但会导致查询异常:( SQLSTATE[23000]:完整性约束冲突:密钥“users\u identifier\u unique”的1062重复条目“76561198364059468”
我有一个laravel 5项目,我想使用软删除方法,但每次删除后,我都会收到以下sql错误消息: 我试图关闭时间戳,但它没有停止,我用谷歌搜索它,我找不到任何解决方案。 迁移: 型号: 谢谢你的帮助。
我有一个简单的团体模型和一个联系模型。 联系人”物品到”一个组和一个组”has很多”联系人。 因此,我的文章migration有一个外键,名为“user_id”。 Contact.php