我有一种情况,我想构建一个hibernate查询,我的API接受动态输入。
同样,客户可以指定是否要将{column1}或{column1,column2}或{column1,column2,column3}作为API的输入传递。
如果它们只传递column1,我将使用column1进行查询。如果他们通过{column1,column2},我将使用column1&列2。等等...
有关在hibernate中构造此类查询的任何建议吗?
答案 0 :(得分:0)
对于某些虚拟示例,您可以将其写为;
public List<User> getAllUsersForConditions(String firstName, String lastName, int age) throws RepositoryException {
Criteria criteria = getCurrentSession().createCriteria(User.class);
if (firstName != null) {
criteria.add(Restrictions.eq("firstName", firstName));
}
if (lastName != null) {
criteria.add(Restrictions.eq("lastName", lastName));
}
if (lastName != null) {
criteria.add(Restrictions.eq("age", age));
}
return (List<User>) criteria.list();
}
此外,如果你有像上面的例子这样的简单查询,那么你可以像@Leo那样使用Query By Example。
但是如果你有复杂的结构,那么这个方法与Criteria一起工作。如果您的搜索更加复杂,则应使用HQL
希望它有所帮助。