私のデータベースには、整数である「年」という列があります。
レコードに年の列に「196...」などが含まれているCriteriaAPI(HQLではなく)を使用して検索するにはどうすればよいですか?
あるべきだと思いますがRestrictions.like
、例外があります。
重大:java.lang.ClassCastException:java.lang.Stringをjava.lang.Integerにキャストできません
実際には、例外はあなたが必要とするすべてを教えてくれるはずです。あなたのRestrictions.like
場合は整数を探していますが、パラメータとして文字列を取得しています。(中古の正確な呼び出しを投稿する必要がありますRestrictions.like
)。
それにもかかわらず、Restrictions.between
方法があります。あなたはあなたの問題のためにそれを使うことができます。例えば:
criteria.add(Restrictions.between("year", 1960, 1970));
別の方法もあります。Restrictions.le
整数は、(以下)、Restrictions.lt
(未満)、Restrictions.gt
(より大きい)、 (より大きいまたは等しい)と比較できますRestrictions.ge
。
より適切で高速な解決策は、Criterion.sqlRestriction(String sql)を使用することです。「'19%'のようなto_char(year)」としてSQLを作成できますが、to_charはデータベース固有であることに注意してください。JPAがto_char関数をサポートしているとは思いません。