关于Criteria查询关联表的问题.高分求助.
用criteria查询几个有关联的表.现在有3个有关联的表A>B>C.我现在只想查询b,并且得到表c的数据.不想查A的数据,如何写代码?我是这样写的,但是总是报空指针.S...
用 criteria 查询几个有关联的表.
现在有3个有关联的表 A>B>C.
我现在只想查询 b,并且得到表c的数据.
不想查A的数据,如何写代码?
我是这样写的,但是总是报空指针.
Session session = this.getSession();
DetachedCriteria de = DetachedCriteria.forClass(B.class);
Criteria c = de.getExecutableCriteria(session);
List<SysUser> s =c.list();
session.close();
如果改成
DetachedCriteria de = DetachedCriteria.forClass(B.class);
Criteria c = de.getExecutableCriteria(session);
de.createCriteria("a");
List<SysUser> s =c.list();
session.close();
则正确,但是又同时返回了表A里的所有值.
如何处理? 解决者有200分送上.
算了,你们可以无视上面的话. 从这里开始看.
现在有A B C三个关联表.关联关系为A>B>C
B中有private A a;属性.
C中有private B b;属性.
当我使用以下代码查询表C和B时,系统报错
DetachedCriteria de = DetachedCriteria.forClass(C.class);
DetachedCriteria def =de.createCriteria("b");
Criteria c = de.getExecutableCriteria(session);
List<SysUser> s =c.list();
session.close();
而如果我写成
DetachedCriteria de = DetachedCriteria.forClass(C.class);
DetachedCriteria def =de.createCriteria("b");
DetachedCriteria ded =def.createCriteria("a");
List<SysUser> s =c.list();
session.close();
则正确.
但是查询到的代码太多.(我不想查询A中的数据)
hibernate 3.0中默认的是延迟加载.
我在xml中也设置了lazy =true.
many to one里也设置了lazy="proxy"
但是产生影响的只是 sql代码 因为返回的B中的private A a;没有得到值,所以报空指针异常.
现在麻烦谁给我写一个能只查询B和C表并且不报空指针异常的代码出来.
PS:不要就来一句:"延迟加载". 那是废话,告诉我具体怎么做. 展开
现在有3个有关联的表 A>B>C.
我现在只想查询 b,并且得到表c的数据.
不想查A的数据,如何写代码?
我是这样写的,但是总是报空指针.
Session session = this.getSession();
DetachedCriteria de = DetachedCriteria.forClass(B.class);
Criteria c = de.getExecutableCriteria(session);
List<SysUser> s =c.list();
session.close();
如果改成
DetachedCriteria de = DetachedCriteria.forClass(B.class);
Criteria c = de.getExecutableCriteria(session);
de.createCriteria("a");
List<SysUser> s =c.list();
session.close();
则正确,但是又同时返回了表A里的所有值.
如何处理? 解决者有200分送上.
算了,你们可以无视上面的话. 从这里开始看.
现在有A B C三个关联表.关联关系为A>B>C
B中有private A a;属性.
C中有private B b;属性.
当我使用以下代码查询表C和B时,系统报错
DetachedCriteria de = DetachedCriteria.forClass(C.class);
DetachedCriteria def =de.createCriteria("b");
Criteria c = de.getExecutableCriteria(session);
List<SysUser> s =c.list();
session.close();
而如果我写成
DetachedCriteria de = DetachedCriteria.forClass(C.class);
DetachedCriteria def =de.createCriteria("b");
DetachedCriteria ded =def.createCriteria("a");
List<SysUser> s =c.list();
session.close();
则正确.
但是查询到的代码太多.(我不想查询A中的数据)
hibernate 3.0中默认的是延迟加载.
我在xml中也设置了lazy =true.
many to one里也设置了lazy="proxy"
但是产生影响的只是 sql代码 因为返回的B中的private A a;没有得到值,所以报空指针异常.
现在麻烦谁给我写一个能只查询B和C表并且不报空指针异常的代码出来.
PS:不要就来一句:"延迟加载". 那是废话,告诉我具体怎么做. 展开
展开全部
你不用考虑A表 因为是数据关联 你查B的时候 自动把B中的A查出来了
建议你再把要描述的内容组织一下 你说的比较模糊 不知道你要表达的什么意思
建议你再把要描述的内容组织一下 你说的比较模糊 不知道你要表达的什么意思
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-04-14
展开全部
推荐您去这看看,这样的问题都有详细的解决方法,他们的java教程讲解的比较全,你可以去学习下,希望对你有帮助
参考资料:http://www.baidu.com/s?wd=%B1%B1%B7%E7%CD%F8&rsv_bp=0&rsv_spt=3&inputT=422
参考资料:http://www.baidu.com/s?wd=%B1%B1%B7%E7%CD%F8&rsv_bp=0&rsv_spt=3&inputT=422
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用延迟加载试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询