哪位大侠给讲讲。。hibernate的一对多和左连接。。。
有个问题。。 一直不太明白。。
例如:
表A
aid aname
1 A
2 V
3 C
表B
bid aid binfo
1 1 xxx
2 1 nnnn
3 3 zzzz
4 3 mmmm
1。表A和表B是一对多的关系。通过hibernate的配置文件,即hbm.xml可配置一对多这个关系。
然后检索时,直接检索两个表。(利用的是HQL语句)
2。直接左连接两个表。进行检索。(利用的是SQL语句)
hibernate一对多检索,能检索出表A的aid是2的这条记录吗?
如果是用SQL的左连接就会把表A的都检索出来。
如果用hibernate进行检索的话,跟用SQL的左连接检索有什么区别?????
hibernate的一对多跟SQL的左连接检索一样吗?
hibernate可以left join on吗?
------解决方案--------------------hibernate一对多检索,能检索出表A的aid是2的这条记录吗?
如果是用SQL的左连接就会把表A的都检索出来。
用Hibernate要用面向对象的思维去思考,你在查询的时候,如果没有配置lazy=false属性,那么默认会进行级联加载,也就是说可以根据A对象得到与之关联的B对象的集合。当然,在一般情况下,建议最好从多的一方获取一得一方。不然会有效率和异常问题。
左外连接,肯定会保留左表的全部记录。
hibernate的一对多跟SQL的左连接检索一样吗?
感觉没有可比性,不应该这么理解。
hibernate可以left join on吗?
可以left join
------解决方案--------------------因为你已经配置了两个对象之间的关系,当然可以取出一这一端的数据,你可以用HQL来写,当然HQL是支持左右连接的,这样写效率上会更高一点,因为控制台只会发一条SQL,还有一种方法就是取多的一端,因为你的javabean中肯定有一这一端的对象,所以你可以通过get方法取到一端对象,这样会产生N+1的问题,效率上不好。所以建议还是用HQL写连接查询