hibernate多对多查询问题
背景描述:
现有表a和b,两表之间存在多对多关系,该关系以表c形式存在,其主键由a主键aid及b主键bid组合生成。经hibernate映射后分别生成类A、类B及类AB。
A中对B的引用表示为:private Set<B> b = new HashSet<B>(0);
B中对A的引用表示为:private Set<A> a = new HashSet<A>(0);
工程中需要通过客户端传来的对象A查询出它所对应的所有对象B,客户端用Flex进行开发。由于Flex传来的对象为ASObject类型,因此需要先从该对象中提取出属性id,再根据id找到对象A,最后得到A对应的所有B。程序段如下:
public List<B> search(ASObject arg){
ADAO ad = new ADAO();
Integer id = (Integer)arg.get("id");
A a = ad.findById(id);
Set<B> b = a.getB();
......
}
问题描述:
对象A无法得到它所对应的对象B集合。经查,发现b为null,但是根据类定义,对象A中的B集合应以被初始化,即使某个对象A没有任何与之发生关系的对象B,也可得到b.isEmpty()为true的结果,而不应该是b为null。之后再次试验,先利用固定值得到对象A,如A a = ad.findById(10),再获取其对应的B集合则不会出现此问题。但不管哪种情况,对象A都能够正确获取,且A的其它属性也是正确的。
不知何故,向各位请教,谢谢!
------解决方案--------------------代码应该不止这些吧。。。我还是觉得你
应该把相应的 配置信息都贴出来,,,,等大神帮你
------解决方案--------------------你确定arg.get("id");对应的id有记录?
------解决方案--------------------配置问题你要的是级联查询效果,设置一下cascade值