我正在尝试使用like()带有部分关键字的Hibernate限制条件查询PostgreSQL数据库:
like()
Criterion c1 = Restrictions.like("stateName", "Virg*"); cri.add(c1); return cri.list();
它不返回任何内容,但Restrictions.like("stateName", "Virginia");返回正确的记录。如何在Hibernate中使用部分 类似的 限制?
Restrictions.like("stateName", "Virginia");
编辑: 通过执行以下操作使其正常工作:
public static List<Object> createQueryStringByRegex(Criteria cri, Parameters p) { String value = (String) p.value; if (value.contains("*")) { value = value.replace("*", "%"); } else { value += "%"; } // System.out.println("Value: "+value); Criterion c1 = Restrictions.ilike(p.property, value); cri.add(c1); return cri.list(); }
使用枚举MatchMode可以帮助您:
Criterion c1 = Restrictions.like("stateName", "Virg", MatchMode.START);
请勿使用任何特殊字符,例如*。而且,如果您希望使用不区分大小写的like,请使用ilike。