grails得到了很多东西

时间:2014-05-05 12:32:38

标签: mongodb grails

我有两个域类

class A {
...
static hasMany= [b:B]
}
class B {
...
static belongsTo=[a:A]
}

当我尝试获取a.b时,我会得到b的列表,例如[1,2,3]

当我创建new B();时,尝试获取a.b,我得到[1,2,3][1,2,3,4]是预料之中的。 我认为这个结果来自缓存。

当我使用

a.refresh() 
a.b

然后,预期结果很好,例如[1,2,3,4]

我的问题是:如何在不使用a.b方法的情况下查询refresh(),从而获得预期结果[1,2,3,4]?

另一个问题是......

 assuming 

b.somefield = c

查询a.b.somefiled时的

结果是[a,b,c]

如果我更新b.somefiled = d

当我尝试a.b.somefiled时 结果是[a,b,c] 预期结果是[a,b,d]

我使用数据库mongodb。

1 个答案:

答案 0 :(得分:0)

听起来好像您没有遵循标准程序并使用addTo方法将B添加到A中。以下是创建新B时应该执行的操作的示例。

B newB = new B()
A existingA = A.get(1)
existingA.addToB(newB)
existingA.save()

上面将保存A和B,并确保B在Hibernate的二级缓存中给定A的Bs集合内。

此外,您可以微调域和集群的休眠缓存设置。 documentation详细解释了这一点。