我在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>
提前致谢。