Java 谷歌应用引擎-删除JPQL查询和级联
我注意到,在使用下面的JPQL查询时,PersistentUser的子级没有被删除。但是,如果执行Java 谷歌应用引擎-删除JPQL查询和级联,java,google-app-engine,jpa,google-cloud-datastore,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; ... @Ove
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();
}
@OneToMany(mappedBy=“persistentUser”,cascade=CascadeType.ALL)
私人收藏持久登录;
...
@凌驾
@交易的
公共最终void removeUserTokens(最终字符串用户名){
最终查询查询=entityManager.createQuery(
“从PersistentUser p中删除,其中username=:username”);
query.setParameter(“用户名”,用户名);
query.executeUpdate();
}
这是预期的,JPQL删除操作不会级联。根据JPA 1.0规范:
4.10批量更新和删除操作
(……)
删除操作仅适用于
指定类的实体和
它的子类它不会级联
到相关实体