Hibernate Criteria API条件“like”带整数

时间:2012-10-11 14:09:21

标签: string hibernate integer sql-like criteria

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

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

我认为它应该是Restrictions.like,但我有例外:

  

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

2 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:5)

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