嵌套域对象不是最新的,refresh()似乎不起作用?

时间:2016-10-02 07:16:05

标签: grails gorm

我有一个由房屋,业主和代理商组成的域名模型。

房屋属于业主,业主有代理人。

我可以按如下方式将代理人分配给所有者:
house.owner.agent = [某个用户]

我似乎无法让house.owner实例认识到所有者对象已经更新,尽管有过多的刷新和刷新。感觉我应该只能说house.owner.agent = [some user]然后只是house.save(),但这些似乎都不够。

我的bootstrap片段

     def house1 = new House(address: '2215 Manley Street', 
         sqft: 1750, acreage: 3.5d, owner: owner1, bedrooms: 3)
    house1.owner.agent=testUser1
    house1.save(flush: true)
    house1.owner.save(flush: true);

    house1.refresh()
    house1.owner.refresh()
    house1.owner.agent.addToActiveNegotiations(neg);  //fails, agent==null 

在此代码段的最后一行设置断点后检查调试器中的值我看到以下内容:

enter image description here

有什么奇怪之处在于,当我检查house.owner.agent的值时,该值为null,但是当我查看相同的domaiin对象时,单独检索,两个对象具有相同的id,但是一个具有agent = null,另一个具有分配的用户。似乎令人耳目一新的东西应该能够解决这个问题,但是我把房子本身和house.owner放在断言前的语句之前,但我似乎仍然在house.owner中有一个陈旧的对象版本。

对此行为的解释表示赞赏。

0 个答案:

没有答案