Java (未能延迟初始化集合,没有会话或会话已关闭)grails 1.3.7中quartz-0.4.2中的错误
工作Java (未能延迟初始化集合,没有会话或会话已关闭)grails 1.3.7中quartz-0.4.2中的错误,java,hibernate,grails,gorm,quartz-scheduler,Java,Hibernate,Grails,Gorm,Quartz Scheduler,工作 class PicSchedulerJob { def myDataService def springSecurityService static triggers = { simple name:'picsJob', startDelay:1000,repeatInterval:30*60*1000 } def group = "icsJobGroup" def
class PicSchedulerJob {
def myDataService
def springSecurityService
static triggers = {
simple name:'picsJob', startDelay:1000,repeatInterval:30*60*1000
}
def group = "icsJobGroup"
def execute() {
def userList=User.list()
userList?.each{User user->
def fullList= Album.findAllByUser(user)
springSecurityService.reauthenticate(user.username)
fullList?.each{Album a->
myDataService.removePicsFilter( a)
}
}
}
}
方法:
def removePicsFilter(Album a){
def tempList=a.photo
int siz=tempList.size()?:0
for(int i=0;i<siz;i++) {
Photo photodb=tempList[i]
PhotoConnection photoConnection=PhotoConnection.findByPhoto(photodb)
photoConnection?.tags.each{
Tag t=Tag.get(it.id)
t.delete()
}
}
a.save(validate:true,flush:true)
}
def removePicsFilter(相册a){
def templast=a.photo
int siz=templast.size()?:0
对于(inti=0;我希望这会有所帮助
在事务中使用Hibernate.initialize()初始化惰性对象
start Transaction
Hibernate.initialize(album.photo());
end Transaction
out of Transaction
tempList=album.photo
问题是Hibernate会话未打开或已关闭。
请通过链接
也可能是对象从hibernate会话中分离。您可以尝试以下方法:
将对象重新附加到hibernate会话,如下所示:object.attach()()
使两个域类之间的关联非惰性()问题在哪里?@Patrick Job是quartz作业代码,Job调用的方法代码,它的错误是我面临的错误。我也尝试了Album.withTransaction和Album.withSession的代码,但无法修复。请指导我。你可以通过询问SSCCE来改进你的问题:。@james.garris我是新来叠加流量的。这是吗现在最好确切地说明您的问题是什么,发生在哪里,正在做什么,以及您希望它做什么。仅仅显示堆栈跟踪是不够的。但您走的是正确的道路。继续改进!谢谢,这实际上帮助我解决了Grails中的一个问题,在会话关闭后延迟加载hasMany关联。只是初始化关联成功了!