8

我注意到 PersistentUser 的孩子在使用下面的 JPQL 查询时没有被删除。但是,如果我执行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();
}
4

1 回答 1

9

这是预期的,JPQL 删除操作不会级联。从 JPA 1.0 规范:

4.10 批量更新和删除操作

(...)

删除操作仅适用于指定类及其子类的实体。它不会级联到相关实体

于 2010-06-08T12:15:37.557 回答