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中的数据?

谢谢。

简单回答一下:
注意:你使用了二级缓存,这个不是hibernate缺省,Hibernate不会替你照顾,你就需要象使用Jdon框架一样自己做好缓存更新,手工更新B。

第二个问题参考第一个。


每次添加或更新B都要清除A?如果是这样的话做太麻烦了,而且也不合理,还不如在web层用memcached。
感觉hibernate的级联操作或者opensessionInView比较鸡肋。
第二个问题。。。。我查了hibernate的api,找不到操作cache的工具。jbosscache不太熟