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