hibernat二级缓存在级联情况下的问题
现在有A,B两个表是一对多的关系,
A的配置文件片段:
<set inverse="true" lazy="false" name="BListForA">
<cache usage="transactional"/>
<key>
<column name="A"/>
</key>
<one-to-many class="B"/>
</set>
用jbossCache做二级缓存,A表的hbm.xml文件中的BListForA对象set标签也做了cache。lazy=false.
现在问题是:
查询A表(from A),级联就把B查出来了,B_set.size()大小没问题
然后往B表插入数据,
再查A表,就不做B表查询了,B_set.size()还是第一次的大小。
这个问题应该怎么解决呢?
如何让程序在插入B表数据后能更新二级缓存?
另外,为什么最后不做B表的查询但还做A表的查询?
测试代码:
List<A> l = (List<A>)dao.findByHQL("from A");
System.out.println(l.get(0).getBListsForA().size()); //n
B e1 = new B();
e1.setA(l.get(0));
B e2 = new B();
e2.setA(l.get(0));
dao.add(e2);
dao.add(e1);
l = (List<A>)dao.findByHQL("from A");
System.out.println(l.get(0).getBListsForA().size()); //should be n+2 , but n
最后,还有一个问题:怎样才能在通过hibernate查看其使用的cache中的数据?
谢谢。