hibernate中的连接查询

来源:互联网 发布:mysql 小于等于 编辑:程序博客网 时间:2024/04/29 09:03

hibernate可以用自带的find,save,saveorupdate,delete之类进行操作,也可以写hql语句。

一些情况需要hql写连接查询,hql与sql是不同的

如果只是简单的连接,内连接,直接写 from table1 t1,table2 t2 where t1.id = t2.id 就行了,这还是支持的

但是遇到什么左连接右连接就不行了,hql不支持join,网上有人说直接写t1 left join r2不用写on,配置好一对多之类的关系的话hibernate会自动连接,我遇到的项目是spring注解实体类属性,没有映射文件,所以我不能这样

最后的解决方式,在hql查询时要使用query,平常的hql就是

query = getSessions().createQuery(sql);
return (List<Object[]>) query.list();


这里要用

query = getSessions().createSQLQuery(sql);

return ...

而上面也不用hql了,写的其实是sql原生语句,列名表明与数据库相同


另外,有的连接查询想获得的是其中一个实体内容,那么可在createSQLQuery后加addEntry(类.class)

原创粉丝点击