Механизм приложения Google - УДАЛЯЕТ запрос JPQL и расположение каскадом

Я заметил, что дочерние элементы PersistentUser не удалены при использовании запроса JPQL ниже. Однако дочерние элементы удалены, если я выполняю 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();
}
8
задан David Underhill 21 July 2010 в 21:20
поделиться

1 ответ

Это ожидаемо, операция удаления в JPQL не каскадируется. Из спецификации JPA 1.0:

4.10 Операции массового обновления и удаления

(...)

Операция удаления применяется только к сущностям указанного класса и его подклассов. Она не каскадируется на связанные сущности.

9
ответ дан 5 December 2019 в 18:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: