我可以在我的工作中对我的域类使用动态查找器Quartz
,但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