1. 程式人生 > >HQL查A表 A、B兩表級聯,B表查詢條件是C表模糊查詢條件的結果

HQL查A表 A、B兩表級聯,B表查詢條件是C表模糊查詢條件的結果

表單文字要實現模糊查詢,假設表單文字框name為putName ;

假設A表有id欄位和putname 欄位(對應表單putName ),判斷B表關聯C表的objectName欄位(假設關聯欄位為bcLink)

是否和A表的id欄位相同?

if (map.get("putname ")!=null ) {

String hql = "from A where putname like '%" + map.get("putname ") + "%'";

List<A> lsA = this.findListByHql(hqlUnit);
if (lsA.size() > 0) {
String ids = "";
for (A a : lsA) {
ids += "'" + a.getId() + "',";
}
ids = ids.substring(0, ids.length() - 1);
hql.append(" and b.bcLink.objectName in ("+ids+")");
} else {
hql.append(" and b.bcLink.objectName in ('000')");//000是一個絕對不存在的id即可

}

}

        //基本查詢方法

        public List findListByHql(String hql) {
Query q = this.getCurrentSession().createQuery(hql);
return q.list();

   }