Google App Engine – 删除JPQL查询和级联

我注意到使用下面的JPQL查询时不会删除PersistentUser的子代。 但是,如果我执行entityManager.remove(object) ,则会删除子项。 这是预期的吗? 为什么下面的JPQL查询也没有执行级联删除?

 @OneToMany(mappedBy = "persistentUser", cascade = CascadeType.ALL) private Collection 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批量更新和删除操作

(……)

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