为什么收集[Person.companies]在使用会话时没有被flush()处理?

时间:2009-07-20 16:57:05

标签: java grails groovy

我正在使用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);

它产生以下错误:collection [Person.companies]未由flush()

处理

我尝试从

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

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

它有效......

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

谢谢你

2 个答案:

答案 0 :(得分:1)

尝试更换:

def person = session.person;

使用:

def person = session.person.attach(); 

答案 1 :(得分:0)

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

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