2013-06-03 47 views
0

我試圖在我的BootStrap.groovy中的文件來創建一個User域對象,但收到以下錯誤休眠事件創建一個域實例:從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方法中調用服務時會發生問題。該服務是非空的,並且調用其中的任何方法(包括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調用時是否可以忽略此代碼?例如。類似於:

def afterInsert() { 
    if (notBootStrap()) { 
     ... 
    } 
} 

任何輸入將不勝感激!

回答

1

Service需要transaction

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

太棒了,太簡單了。謝謝! – osborp

相關問題