我注意到在使用下面的 JPQL 查询时,PersistentUser 的子项没有被删除。但是,如果我执行 entityManager.remove(object)
,子项将被删除。这是预期的吗?为什么下面的 JPQL 查询不执行级联删除?
@OneToMany(mappedBy = "persistentUser", cascade = CascadeType.ALL)
private Collection<PersistentLogin> persistentLogins;
...
@Override
@Transactional
public final void removeUserTokens(final String username) {
final Query query = entityManager.createQuery(
"DELETE FROM PersistentUser p WHERE username = :username");
query.setParameter("username", username);
query.executeUpdate();
}
最佳答案
这是预期的,JPQL 删除操作不会级联。来自 JPA 1.0 规范:
4.10 Bulk Update and Delete Operations
(...)
A delete operation only applies to entities of the specified class and its subclasses. It does not cascade to related entities.
关于java - Google App Engine - 删除 JPQL 查询和级联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2995693/