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)