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批量更新和删除操作
(……)
删除操作仅适用于指定类及其子类的实体。 它不会级联到相关实体 。