Я могу использовать динамические искатели в своих классах домена в своем задании , но получаю org.hibernate.LazyInitializationException
при доступе к отношениям. Я думал, что они либо будут работать, либо нет.org.hibernate.LazyInitializationException в задании кварца
class MyJob {
def author = Author.list().first() // fine
def book = Book.get(1) // fine
println author.books // lazy exception
}
Любая идея, почему это может произойти? Согласно документации плагина Quartz каждый поток заданий получает сеанс Hibernate, но я столкнулся с этой проблемой.
Grails 2.1.1
, quartz:1.0-RC9
Полное Ошибка:
2013-07-16 16:08:10,008 [quartzScheduler_Worker-10] ERROR grails.plugins.quartz.listeners.ExceptionPrinterJobListener - Exception occurred in job: null
org.quartz.JobExecutionException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: test.Author.books, no session or session was closed [See nested exception: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: test.Author.books, no session or session was closed]
at grails.plugins.quartz.GrailsJobFactory$GrailsJob.execute(GrailsJobFactory.java:96)
at grails.plugins.quartz.QuartzDisplayJob.execute(QuartzDisplayJob.groovy:29)
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: test.Author.books, no session or session was closed
at test.MyJob$_execute_closure1$$EOBjSWum.doCall(MyJob.groovy:7)
at test.MyJob$$EOBjSWum.execute(MyJob.groovy:7)
at grails.plugins.quartz.GrailsJobFactory$GrailsJob.execute(GrailsJobFactory.java:89)
... 3 more
Я не проверял это, но попытаться обернуть 'Def author' и' author.books' строки в withSession или закрытия withTransaction, увидеть, если это помогает – Alidad
вы можете позволить себе нетерпеливый выборки ?, не уверен, но только попробуйте с ленивым ложным. –