Jac*_*cob 12 java orm hibernate jpa jpa-2.0
为什么以下查询因外键约束而失败?没有其他方法可以删除我所知道的相关数据.
Query query=em.createQuery("DELETE FROM Person");
query.executeUpdate();
em.getTransaction().commit();
Run Code Online (Sandbox Code Playgroud)
我认为导致问题的违规关系是这个activationKey领域:
2029 [main] ERROR org.hibernate.util.JDBCExceptionReporter - integrity
constraint violation: foreign key no action; FKCEC6E942485388AB
table: ACTIVATION_KEY
Run Code Online (Sandbox Code Playgroud)
这就是我现在拥有的:
@Entity
@Table(name="person")
public class Person implements Comparable<Person> {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="id")
private long id = 0;
@ElementCollection
@Column(name = "activation_key")
@CollectionTable(name = "activation_key")
private Set<String> activationKey = new HashSet<String>();
}
Run Code Online (Sandbox Code Playgroud)
Pas*_*ent 13
为什么以下查询因外键约束而失败?
看起来您的批量删除查询没有删除集合表中的条目,因此违反了FK约束.
虽然JPA规范明确写道批量删除不是级联到相关实体:
4.10批量更新和删除操作
...
删除操作仅适用于指定类及其子类的实体.它不会级联到相关实体.
这不完全是你的情况,我认为应该支持你想要做的事情.
您可能面临Hibernate批量删除的限制之一,例如:
我建议提出一个问题.
解决方法:使用本机查询删除集合表,然后删除实体表.
| 归档时间: |
|
| 查看次数: |
10551 次 |
| 最近记录: |