天天看點

【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(, 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")可以取值了
           

繼續閱讀