我有一个使用Hibernate构建的Web应用程序。 在一个页面中,我有一个带有5个输入的提交按钮
当所有输入都为空时,我进行简单的查询
Query query = session.createQuery("from MyTable");
但是当我至少有一个输入不为null时,我必须创建搜索查询。比方说,field1不是null:
Query query = session.createQuery("from MyTable where field1= :field1");
query.setParameter("field1", field1);
但是我需要检查每一个输入,我需要根据这个东西创建查询字符串。
创建搜索查询的最智能,最简单的方法是什么?
答案 0 :(得分:2)
您可以改为使用Criteria-Query:
Criteria criteria = hibernateSession.createCriteria(YourClass.class);
然后根据每个字段为您的查询添加条件:
if(fieldValue1 != null) {
criteria.add(Restrictions.eq("FieldProperty1", fieldValue1))
}
if(fieldValue2 != null) {
criteria.add(Restrictions.eq("FieldProperty2", fieldValue2))
}
...
当然,只有使用本机hibernate API而不是JPA-API才能使用。