代码之家  ›  专栏  ›  技术社区  ›  Taylor Leese

谷歌应用引擎-删除JPQL查询和级联

  •  8
  • Taylor Leese  · 技术社区  · 14 年前

    entityManager.remove(object)

    @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();
    }
    
    1 回复  |  直到 14 年前
        1
  •  9
  •   Pascal Thivent    14 年前

    这是预期的,JPQL delete操作不会级联。根据JPA 1.0规范:

    4.10批量更新和删除操作

    (...)

    删除操作仅适用于 指定类的实体和 它的子类。 它不会级联 关联实体 .