8

以下の 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();
}
4

1 に答える 1

9

これは予期されたものであり、JPQL の削除操作はカスケードしません。JPA 1.0 仕様から:

4.10 一括更新および一括削除操作

(...)

削除操作は、指定されたクラスとそのサブクラスのエンティティにのみ適用されます。関連するエンティティにはカスケードしません

于 2010-06-08T12:15:37.557 に答える