gpt4 book ai didi

hibernate - 从BootStrap.groovy使用 hibernate 事件创建域实例

转载 作者:行者123 更新时间:2023-12-02 15:32:41 24 4
gpt4 key购买 nike

我试图在我的BootStrap.groovy文件中创建一个用户域对象,但收到以下错误:

[ERROR]:AssertionFailure  an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session)

域对象如下所示:从afterInsert方法中调用服务时会发生问题。该服务是非null的,并且在其上调用任何方法(包括toString()或inspect())似乎都会导致错误。

BootStrap.groovy
def newUser = new User(...)
newUser.save(flush:true, failOnError: true)

User.groovy
class User extends Auth {
transient def userService

...

def afterInsert() {
log.debug "SERVICE: ${userService == null ? 'NULL': 'NOT NULL'}" // Gives: SERVICE: NOT NULL

// Either of the following lines cause the error when uncommented
//log.debug "SERVICE: ${userService.toString()}"
//userService?.makeUser(this)
}

}

使用BootStrap应该可以做到这一点,还是我有根本上的错误?

另外,从BootStrap调用时是否可以忽略此代码?例如。类似于:
def afterInsert() {
if (notBootStrap()) {
...
}
}

任何输入将不胜感激!

最佳答案

Service需要一个transaction

def afterInsert() {
User.withTransaction{
userService.makeUser(this)
}
}

关于hibernate - 从BootStrap.groovy使用 hibernate 事件创建域实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16896437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com