表单文本要实现模糊查询,假设表单文本框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();
}