如何使用动态输入构造hibernate查询?

时间:2014-10-09 23:34:39

标签: sql hibernate

我有一种情况,我想构建一个hibernate查询,我的API接受动态输入。

同样,客户可以指定是否要将{column1}或{column1,column2}或{column1,column2,column3}作为API的输入传递。

如果它们只传递column1,我将使用column1进行查询。如果他们通过{column1,column2},我将使用column1&列2。等等...

有关在hibernate中构造此类查询的任何建议吗?

1 个答案:

答案 0 :(得分:0)

了解Hibernate Criteria

对于某些虚拟示例,您可以将其写为;

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

希望它有所帮助。