1
我想在我的Grails(v3.0.11)應用程序中使用Hibernate Envers。由於grails envers插件已經死了,我試圖自己做。Grails中的Hibernate Envers
我做了什麼:
中的build.gradle,我加入了休眠Envers依賴 compile "org.hibernate:hibernate-envers"
我的域名看起來像:
import org.hibernate.envers.Audited
@Audited
class Hotel {
String name
}
在腳手架控制器
,我只是改變了:
class HotelController {
...
@Transactional
def save(Hotel hotel) {
...
Hotel.withTransaction {
hotel.save flush:true
}
...
}
...
}
我ge t保存時有以下例外情況:
URI
/hotel/save
Class
org.hibernate.envers.exception.AuditException
Message
null
Caused by
Unable to create revision because of non-active transaction
Line | Method
->> 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 617 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run . . . in java.lang.Thread
Caused by HibernateSystemException: Unable to create revision because of non-active transaction; nested exception is org.hibernate.envers.exception.AuditException: Unable to create revision because of non-active transaction
->> 32 | doCall in HotelController.groovy
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 96 | doInTransaction in grails.transaction.GrailsTransactionTemplate$2
| 93 | execute . in grails.transaction.GrailsTransactionTemplate
| 31 | $tt__save in HotelController.groovy
| 96 | doInTransaction in grails.transaction.GrailsTransactionTemplate$2
| 93 | execute in grails.transaction.GrailsTransactionTemplate
| 96 | doInTransaction in grails.transaction.GrailsTransactionTemplate$2
| 93 | execute in grails.transaction.GrailsTransactionTemplate
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run . . . in java.lang.Thread
Caused by AuditException: Unable to create revision because of non-active transaction
->> 32 | doCall in HotelController.groovy
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 96 | doInTransaction in grails.transaction.GrailsTransactionTemplate$2
| 93 | execute . in grails.transaction.GrailsTransactionTemplate
| 31 | $tt__save in HotelController.groovy
| 96 | doInTransaction in grails.transaction.GrailsTransactionTemplate$2
| 93 | execute in grails.transaction.GrailsTransactionTemplate
| 96 | doInTransaction in grails.transaction.GrailsTransactionTemplate$2
| 93 | execute in grails.transaction.GrailsTransactionTemplate
| 1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
| 617 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 745 | run . . . in java.lang.Thread
我在做什麼錯?如何使交易「活躍」?
看起來像使用兩個交易實際上有。嘗試刪除'withTransaction'閉包或'@ Transactional'註釋。查看範圍內僅發生一次事務會發生什麼。 –
我嘗試了兩個,沒有改變。我只是試圖使用withTransaction方法,因爲我在舊的envers插件中看到它(http://www.lucasward.net/2011/04/grails-envers-plugin.html) – mmz