Hibernate Criteria API条件“like”带整数

问题描述 投票:1回答:2

在我的数据库中,我有一个“year”列,它是一个整数。

如何使用Criteria API(而不是HQL)搜索哪些记录包含,例如年份列中的“196 ...”?

我认为它应该是Restrictions.like,但我得到了例外:

SEVERE:java.lang.ClassCastException:java.lang.String无法强制转换为java.lang.Integer

string hibernate integer sql-like criteria
2个回答
5
投票

更好更快的解决方案是使用Criterion.sqlRestriction(String sql)。您可以将sql形成为“to_char(year)like '19%'”,请注意to_char是特定于数据库的。我不认为JPA支持to_char函数。


5
投票

实际上,异常应该告诉你所需要的一切。在你的情况下Restrictions.like正在寻找一个整数,但得到一个字符串作为参数。 (你应该发布使用的Restrictions.like的确切调用)。

然而,有一个Restrictions.between方法。你可以用它来解决你的问题。例如:

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

还有其他方法。整数可以与Restrictions.le(小于或等于),Restrictions.lt(小于),Restrictions.gt(大于),Restrictions.ge(大于或等于)进行比较。

© www.soinside.com 2019 - 2024. All rights reserved.