OpenJPA:无法删除或更新父行:外键约束失败

时间:2017-10-11 13:02:42

标签: java mysql jpa foreign-keys constraints

我在OpenJPA上遇到了另一个问题。 我试图从数据库中删除一个条目,但每次我尝试时都会得到一个像标题中的那样的ErrorMessage。

条目的降级确实违反了一些约束条件,但我认为有一种方法可以让JPA在删除实际的目标条目之前自动删除这些依赖条目。

我尝试使用相应的@ ManyToOne-Annotations中的cascade = CascadeType.Remove属性和@ OneToMany-Annotations中的orphanRemoval = true属性,但它没有帮助。

我想避免自己删除这些条目,因为我没有那么多时间来实现这个功能,还有很多其他事情要做。

我是否需要在persistence.xml中设置另一个属性或类似的东西?我真的不明白我做错了什么。

@OneToMany(mappedBy = "x", orphanRemoval=true)
private Set<SomeClass> class;

@ManyToOne(optional = false, cascade=CascadeType.Remove)
private SomeClass class;

这是我的persistence.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
         http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
         version="2.0">
<persistence-unit name="unit-name">
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <class>Class1</class>
    <class>Class2</class>
    <class>Class3</class>
    <class>Class4</class>
    <class>Class5</class>
    <class>Class6</class>
    <class>Class7</class>
    <class>Class8</class>
    <class>Class9</class>
    <properties>
        <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
        <property name="openjpa.jdbc.SchemaFactory" value="native(ForeignKeys=true)"/>
        <property name="openjpa.jdbc.MappingDefaults" value="ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict"/>
        <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost:3306/scheme"/>
        <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
        <property name="openjpa.ConnectionUserName" value="user"/>
        <property name="openjpa.ConnectionPassword" value="password"/>
        <property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE"/>
    </properties>
</persistence-unit>

提前致谢。

0 个答案:

没有答案