删除导致StaleStateException

时间:2013-09-24 09:34:59

标签: hibernate grails gorm

我们使用Grails当然使用hibernate作为其O / R.在一个实例中,我们有多个请求试图删除同一个对象。第一个线程将删除,尝试删除该对象的第二个线程抛出StaleStateException。这是预期的。据医生说:

http://docs.jboss.org/hibernate/envers/3.6/javadocs/org/hibernate/StaleStateException.html

此例外:Also occurs if we try delete or update a row that does not exist.

现在,在我们的案例中,这不是一个例外。我们不在乎它已被删除。我们不希望在删除之前进行检查,我们只想放入异常处理,因为它实际上并不是一个例外。

如果尝试删除并且对象不存在,我们真正想要做的就是没有此异常抛出。

有没有办法用Grails / Gorm做到这一点?

我最好的理想是使用HSQL的一些SQL进行删除,而不是使用hibernate / grails API。

还有更好的吗?

1 个答案:

答案 0 :(得分:0)

尝试捕获线程中的异常:

try {
    YourDomain.withTransaction { status ->

        ...

        yourDomainInstance.delete()

        ...

        }
} catch (org.springframework.dao.OptimisticLockingFailureException olfe) {
log.warn(olfe.toString())
} catch (org.hibernate.StaleStateException staleStateException) {
log.warn(staleStateException.toString())
}