在hibernate中匹配查询两个字符

时间:2011-07-04 06:56:01

标签: hibernate

我正在使用Hibernate和mysql 我的java中有一个关键字,我需要从MySQL中检索记录

    Restrictions.like("resume Text", keyword, Match Mode.ANYWHERE));

当我将关键字发送为测试时,它可以正常工作,当我将关键字发送为示例时,当我将关键字发送为测试时,样本它失败了,不回复任何结果。

任何解决方案

感谢

2 个答案:

答案 0 :(得分:1)

您无法将多个值传递给like的单值value参数。

尝试使用Restrictions.or构建逻辑,如下所示:

Restrictions.or(
    Restrictions.like("resume Text", "test", Match Mode.ANYWHERE),
    Restrictions.like("resume Text", "sample", Match Mode.ANYWHERE)
);

或者改为使用Restrictions.and,具体取决于您尝试实现的匹配逻辑

答案 1 :(得分:0)

波西米亚语是现货,但如果你有超过2个或者子句,那么你可能更好地使用Disjunction(或)或Conjunction(和):

        Disjunction orClause = Restrictions.disjunction();
        orClause.add(Restrictions.like("resume Text", "test", Match Mode.ANYWHERE));
        orClause.add(Restrictions.like("resume Text", "test", Match Mode.ANYWHERE));
        orClause.add(...)
        criteria.add(orClause);