【问题标题】:why collection [Person.companies] was not processed by flush() when using session?为什么在使用会话时,flush() 没有处理集合 [Person.companies]?
【发布时间】:2010-11-12 09:15:17
【问题描述】:

我正在使用 grails 1.1.1,但出现此错误 集合 [Person.companies] 未被 flush() 处理

配置如下: 个人域有很多公司(公司域) 而公司属于个人

然后在控制器中我确实喜欢这个

def person = session.person ; 
def jobs =  Job.findByPerson(person);
jobs.currentSalary = new BigDecimal(params.currentSalary);
... another code ... 

jobs.save(flush:true);

它会产生以下错误:集合 [Person.companies] 未由 flush() 处理

我试图从

更改第一行
def person = session.person;
to
def person = Person.get(session.person.id);

我在邮件列表上看到,有人说它与可搜索插件有关,但我没有使用那个。

它的工作原理......

我的问题,为什么我不能使用包含相同对象的 session.person。

谢谢你

【问题讨论】:

    标签: java grails groovy


    【解决方案1】:

    尝试替换:

    def person = session.person;
    

    与:

    def person = session.person.attach(); 
    

    【讨论】:

      【解决方案2】:

      当 person.company 被定义为 List 而不是 Set 或 SortedSet 时,我遇到了类似的问题。就我而言,我最终不得不更改 Company 的 compareTo 函数,以便 SortedSet 正常工作。这似乎是这些 JIRA 2986 和 4453 之间的奇怪交互,我没有时间理清。根本问题涉及到集合的一些延迟加载。

      http://jira.codehaus.org/browse/GRAILS-4453 (只能发一个超链接)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 2011-11-10
        • 2021-02-13
        • 2023-03-16
        相关资源
        最近更新 更多