java - Google App Engine - 删除 JPQL 查询和级联

标签 java google-app-engine jpa google-cloud-datastore jpql

我注意到在使用下面的 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/

相关文章:

java - 同步 Android sqlite 数据库和 GAE 数据存储

java - 使用roo用mongo创建springsource项目

java - 为什么没有更多的 Java 代码使用 PipedInputStream/PipedOutputStream?

java - 生命游戏邻居问题。数组索引越界异常

java - KeyListener 不改变 JPanel

java - 如何在插件中解析 Maven 存储库中的工件?

google-app-engine - grails在google-app-engine上灵活部署应用会在grails.init.RunCommand中导致ClassNotFoundException

android - 端点方法接收修改后的字符串参数

java - 应用泛型类@MappedSuperclass作为targetEntity.Error : @ManyToOne on models. Unit.parent引用未知实体: models. GenericHierarchic

java - Spring boot JPA @Query 与 like 和 in