1

私のデータベースには、整数である「年」という列があります。

レコードに年の列に「196...」などが含まれているCriteriaAPI(HQLではなく)を使用して検索するにはどうすればよいですか?

あるべきだと思いますがRestrictions.like、例外があります。

重大:java.lang.ClassCastException:java.lang.Stringをjava.lang.Integerにキャストできません

4

2 に答える 2

5

実際には、例外はあなたが必要とするすべてを教えてくれるはずです。あなたのRestrictions.like場合は整数を探していますが、パラメータとして文字列を取得しています。(中古の正確な呼び出しを投稿する必要がありますRestrictions.like)。

それにもかかわらず、Restrictions.between方法があります。あなたはあなたの問題のためにそれを使うことができます。例えば:

criteria.add(Restrictions.between("year", 1960, 1970));

別の方法もあります。Restrictions.le整数は、(以下)、Restrictions.lt(未満)、Restrictions.gt(より大きい)、 (より大きいまたは等しい)と比較できますRestrictions.ge

于 2012-10-11T14:34:28.647 に答える
5

より適切で高速な解決策は、Criterion.sqlRestriction(String sql)を使用することです。「'19%'のようなto_char(year)」としてSQLを作成できますが、to_charはデータベース固有であることに注意してください。JPAがto_char関数をサポートしているとは思いません。

于 2012-10-11T15:11:14.693 に答える