微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何实现Spring Roo实体的“全部删除”?

如何解决如何实现Spring Roo实体的“全部删除”?

| 我正在尝试删除Spring Roo实体的所有数据库条目。当我查看“ 0”时,似乎没有“全部删除方法。我尝试自己实现它(ѭ1是Roo实体的名称。不要介意命名。它是通过数据库进行reverese设计的,以后可能会更改):
public static int Licences.deleteall() {
    return entityManager().createquery(\"delete from Licences o\").executeUpdate();
}
它可以正常编译,但是当我调用
Licences.deleteall()
时,出现以下异常:
org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; 
nested exception is javax.persistence.TransactionrequiredException: Executing an update/delete query (NativeException)
加ѭ5没什么区别。 我在这里想念什么? 这种方法是完全错误的,我需要这样实现吗:
    public static void Licences.deleteall() {
        for (Licences licence : findAllLicenceses()) {
            licence.remove();
        }
    }
这是可行的,但是JPA是否足够聪明,可以将其转换为
delete from licences
查询,还是会创建
n
查询?     

解决方法

@Transactional在静态函数上不起作用 更改
public static int Licences.deleteAll() {
    return entityManager().createQuery(\"delete from Licences o\").executeUpdate();
}
public int Licences.deleteAll() {
    return entityManager().createQuery(\"delete from Licences o\").executeUpdate();
}
https://jira.springsource.org/browse/SPR-5999 再见     ,JPA没有删除所有功能。 (即使不是JQL!) 至少只有三种方式: 像你一样循环 JPQL查询请参阅:JPQL参考:10.2.9。 JPQL批量更新和删除 本机SQL查询,但这将导致实体管理器缓存很多问题! 顺便说一句:它表明您正在使用AspectJ附加删除方法。 -您可以执行此操作(即使我不知道,为什么不直接将静态方法添加到Entity类),但也不能触摸Roo生成的aj文件!     ,
public static int Licences.deleteAll() {
    return new Licences().deleteAllTransactional();
}

@Transactional
private int Licences.deleteAllTransactional() {
    if (this.entityManager == null) this.entityManager = entityManager();
    return this.entityManager.createQuery(\"delete from Licences o\").executeUpdate();
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。