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 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();

   }

你可能感兴趣的:(关系型数据库)