Hibernate Grails和第三方工具使用相同的数据库:第三方删除后如何更新Grails?

Hibernate Grails和第三方工具使用相同的数据库:第三方删除后如何更新Grails?,hibernate,grails,Hibernate,Grails,我正在编写一个服务方法(Grails2.5.5),它使用第三方RESTAPI删除实体。在我的方法的中途,我对其中一个实体调用了.refresh(),得到了以下异常: org.springframework.orm.hibernate4.HibernateObjectRetrievalFailureException: No row with the given identifier exists: [MyEntity#7103]; nested exception is org.hibernat

我正在编写一个服务方法(Grails2.5.5),它使用第三方RESTAPI删除实体。在我的方法的中途,我对其中一个实体调用了
.refresh()
,得到了以下异常:

org.springframework.orm.hibernate4.HibernateObjectRetrievalFailureException: No row with the given identifier exists: [MyEntity#7103]; nested exception is org.hibernate.UnresolvableObjectException: No row with the given identifier exists: [MyEntity#7103]
这是真的,因为我刚刚使用RESTAPI删除了它。如果重要的话,被删除的MyEntity位于我试图刷新的实体上的
hasMany
。我(想我)不想将此标记为
ignoreNotFound


如何告诉Grails/Hibernate这个记录不再存在是可以的?

我遇到了同样的问题,并找到了下一个解决方案

所以你有实体E,它有实体A的列表。 如果需要删除实体A,则需要执行以下操作:

 public void deleteA(List<Integer> ids) {
    if (!ids) {
        return
    }
    List<A> aToDelete = A.findAllByIdInList(ids)
    aToDelete.each { A a ->
        if(a.e) {
            E e = a.e
            e.a.remove(a)
        } else {
            a.delete()
        }
    }
}
public void deleteA(列表ID){
如果(!ids){
返回
}
List aToDelete=A.findallbydinList(ids)
aToDelete.each{A->
如果(a.e){
E=a.E
e、 删除(a)
}否则{
a、 删除()
}
}
}

因此,我们的想法是检查A是否与E有任何关系,如果是,则通过E删除它,否则直接删除它。对我来说效果很好。

ha,我又遇到了这个问题,有一刻我非常激动,因为谷歌发现了这么一个对我有用的问题!第三方工具和我的grails webapp都查看同一个数据库。如果我使用第三方工具的RESTAPI(通常涉及删除多个表中的行)删除一个实体,那么如何通知grails删除了什么?