hibernate - GORM:懒惰地保存

标签 hibernate grails gorm

a)我尝试保存属于数据存储域类的联系人项,如下所示:

class Contacts implements Serializable{

    static belongsTo = [dataStore:DataStore]

    DataStore dataStore
    String emailaddress

DS类:
class DataStore implements Serializable{

    static belongsTo = [service:Service,user:User]
    static hasMany = [users:User,contacts:Contacts,groups:Groups]

    Service service
    User user
    User users
    List<Contacts> contacts

b)在 Controller 级别,我创建一个联系人作为ajax请求:
def create() {
        String key = session["KEY"]
        DataStore ds = session["DS"]
        def user = springSecurityService.currentUser
        def c = new Contacts(dataStore:ds,emailaddress:params.contacts.email)
        if (c.validate()) {
            ds.addToContacts(c).save(flush:true)
            c.save()

c)以下错误阻止保存
failed to lazily initialize a collection of role: $$$.DataStore.contacts, no session or session was closed. Stacktrace follows:
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: $$$.DataStore.contacts, no session or session was closed
    at $$$$.ContactsController$$EO4iccbg.create(ContactsController.groovy:115)
    at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:195)
    at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63)
    at net.bull.javamelody.JspWrapper.invoke(JspWrapper.java:149)
    at net.bull.javamelody.JdbcWrapper$DelegatingInvocationHandler.invoke(JdbcWrapper.java:259)
    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:202)
    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:175)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at java.lang.Thread.run(Thread.java:680)

session 正在进行中……这意味着什么?有解决这个问题的主意吗?谢谢

最佳答案

在对Grails OpenSessionInViewFilter处于休眠状态一段时间后,我终于通过重置dataStore session 来找到解决方案,如下所示:

def dsx = DataStore.get(ds.id)

关于hibernate - GORM:懒惰地保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16347987/

相关文章:

java - 语法错误,Map<> 字段上的 QueryDSL "Case When",具有聚合

java - JPA Hibernate 查询与 native 查询

grails - grails:在环境级别设置日志阈值?

intellij-idea - IntelliJ最近的grails命令

grails - grails/gorm消息捆绑问题

java - hibernate +Spring MVC : external objects library

java - hibernate:OneToMany RelationShip:实体表不接受多个值

mysql - findAllByPropertyInList 结果错误,JOIN 相关或 hibernate Distinct/分页问题?

grails - 分页与集合

caching - GORM(纹理)-缓存Blob图片或其他内容