我有两个域类
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。
答案 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详细解释了这一点。