我在grails应用程序中使用以下代码:
def domainId = params.id
def domain = Domain.get(domainId)
def users = // assume this is an array of approx 2200 entries
Thread t = new Thread(new Runnable() {
@Override
void run() {
User.withNewSession {
def mDomain = Domain.get(domainId)
users.each { user ->
try {
// some code
mDomain.save(flush:true)
} catch (e) {
log.error(e)
}
}
}
}
})
t.start()
上面的代码给出了异常 - NonUniqueObjectException: A different object with the same identifier value was already associated with the session
数组中的所有条目都没有例外。在2200个条目中,异常被抛出大约1500个。我已经在新线程中使用withNewSession
并且对于users
数组中的所有条目,使用了mDomain
的相同实例。