HQL查A表 A、B兩表級聯,B表查詢條件是C表模糊查詢條件的結果
阿新 • • 發佈:2018-11-25
表單文字要實現模糊查詢,假設表單文字框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);
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();
}