svz*_*svz 11 grails hibernate grails-orm
我有一个具有以下结构的方法:
public void run(){
...
for (...) { //this part works correct
User.withTransaction {
User user = User.findByUsername(...);
Position pos = Position.findByName(...)
if(pos){ ...
} else { ...
try{
pos.save(flush:true);
user.position = pos;
} catch (Exception e){ ... }
}
...
try{
user.save(flush:true, failOnError: true);
} catch (Exception e){ ... }
}
}
//this part doesn't work
User.findAll().each {
...
if (...){
User.withTransaction{
...
//here the operation fails with
//org.hibernate.LazyInitializationException:
//could not initialize proxy - no Session
if (!userDetailsMap.containsKey(it.username)
&& it.userStatus != blocked){
it.userStatus = blocked
it.save(flush:true)
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我到这里的例外是org.hibernate.LazyInitializationException: could not initialize proxy - no Session
在我的代码的第二部分.这里的userStatus
字段是对不同域类的引用.
我试图在检查属性之前添加it.refresh()
和Hibernate.initialize(it)
代码,但没有用.我在这做错了什么?
upd:我试图it.attach
在检查属性之前调用方法,但是在方法调用之后it.attached
就是is false
.
zor*_*119 20
我认为你没有做任何'错误',只是该对象与hibernate会话分离.我尝试过几件事:
归档时间: |
|
查看次数: |
13260 次 |
最近记录: |