SQLQuery quuery = thisgetHibernateTemplete()createSQLQuery(sql);
List<Object[]> list = querylist();
然后循环就可以了 ,这里的Object[]要有一些类型转换哦
如果你非要用hibernate对象的话,需要建立一个对象,包含查询的4个数据的对象(如:MessageInfo)。并包个一个4个参数的构造方法,hql如下
select new MessageInfo( aservno,aservname,bcontents,cdeptname) from t_serviceitem a
left join vs_servexplan b on aservno=bservno and bexplantype=1
left join t_department c on aservdept=cdeptcode where 1=1
这样的语句就可以了,不过三个表名要换成类名,不然就不对了直接用hql就可以,比如
Query q = sessioncreateQuery("select mid, mtopiccategoryname from Msg m where mtopiccategoryid=1");
for(Object o : qlist()){
Object[] res = (Object[])o;
Systemoutprintln(res[0] + "=====" + res[1]);
}3种
1)session对象的load和get方法,只能按主键查询
2)hql:语法与sql类似,但查询的是对象,支持所有的sql查询方式,可以直接返回对象集合,可以完成修改删除
3)Criteria:只能进行查询,可以不用写查询语句,通过java代码完成多对多中间表一般不用这种处理方式,首先中间表是没有唯一的主键作为标识,更新信息的时候,hibernate可能出现错误更新或者异常。
通常反向工程的时候不选择中间表,next以后勾选一个many-to-many的选项(让myeclimpse自动去嗅探多对多关系,然后分解成2个一对多的关系)。生成的pojo类里面就会比原有的pojo类多一个集合。比如,User类里面会有一个Role类的set集合,Role类里面有一个User类的set集合。
直接用hibernate获取到指定的user,程序里面foreach迭代一下set集合,OK
建议LZ去补下hibernate里面有关级联的知识。这么过查法感觉有点怪怪的,这样处理的
from SsjFood sf where sffoodName like '%"+foodname+"%'" group by sfSsjShop order by sffoodPrice;
当然 Entity里有相关配置用SQLQuery query=sessionCreateSQL();来 *** 作就好了,多表联合查询因为没有对应的POJO类,很麻烦。
用原生的SQL就可以直接用你上面的SQL语句了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)