Hibernateの制限基準 like()
と部分的なキーワードを使用してPostgreSQLデータベースをクエリしようとしています:
_Criterion c1 = Restrictions.like("stateName", "Virg*");
cri.add(c1);
return cri.list();
_
何も返しませんが、Restrictions.like("stateName", "Virginia");
は正しいレコードを返します。 Hibernateで部分的なlike制限を使用するにはどうすればよいですか?
編集:
次のようなことを行うことで機能します:
_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();
}
_
制限にはパーセント記号を使用する必要があります。
Criterion c1 = Restrictions.like("stateName", "Virg%");
##Use MatchMode.ANYWHERE##
DetachedCriteria crit = DetachedCriteria.forClass(MyClass.class);
crit.add(Restrictions.like("prop1", "matchValue", MatchMode.ANYWHERE));
return getHibernateTemplate().findByCriteria(crit);
これは次と同等です。
select *
from Table_Name
where prop1 like "%matchValue%";