【Hibernate0001】Hibernate的createSQLQuery查询 返回值设置

creatQuery不能嵌套查询怎么办?用createSQLQuery来使用原生SQL语句,设置返回值来得到你想要的返回值。

1对象封装 addEntity(Favourite.class);

String  hql = "select * from favourite f where f.favourite_id in (select favourite_id from user_follow_favor uf  WHERE uf.u_id = ?)";
        Query query =factory.getCurrentSession().createSQLQuery(hql).addEntity(Favourite.class);
        query.setString(0, u.getUId());
        ArrayList<Favourite>list = (ArrayList<Favourite>) query.list();

2 Map封装,属性值

Query query = session.createSQLQuery("select id,name from Tree t where pid in (select id from Tree) ").setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);//返回一个map,KEY:为DB中名称一致(大小写一致)  
//遍历list时就可以
Map map = (Map)list.get(i);
map.get("id");
map.get("name");//来取值。
按你的SQL语句select后的字段名来作为map的Key,但这个key必须与数据库中的字段名一模一样

3函数方面设值

Query query = session.createSQLQuery("select sum(id) SUMID from Tree t where pid in (select id from Tree).addScalar("SUMID",Hibernate.INTEGER).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);转换类型,按DB中的type转;返回一个map,KEY:为DB中名称一致(大小写一致)
Map map = (Map)list.get(i);
map.get("SUMID");
直接就map.get("SUMID")可以取值了

版权声明:本文为q476855396原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。