Criterion Restrictions.like和数字和日期

时间:2011-05-27 08:53:38

标签: hibernate criteria

我在mySQL上使用Hibernate。在mySQL中,你可以将LIKE放在查询中,即使是数字(如双)参数和日期,例如你可以写:

select * from sillytable where field like "3.33%"

这将有效。问题是我不能在使用Restrictions.like的标准中执行此操作,实际上它会抛出一个异常,表示它无法将String强制转换为Date或Double。

我该怎么做呢?

3 个答案:

答案 0 :(得分:1)

我发现只做解决方案就是我打算做的就是使用HQL。 在Criteria

中没有明确的方法可以做到这一点

答案 1 :(得分:0)

我认为这实际上是:

x => 3.33 and x < 3.34

在休眠中,这是:

Restriction.between("field", 3.33, 3.34)

之间定义为(min <= expr AND expr <= max)。所以上限必须改为从3.33开始的最大值。 (警告:如果上限不可表示,并且3.34用3.33999表示,则可能表示失败....如果你使用此已经有效的界限执行nextAfter,你会错过这一个值。)

Restriction.between("field", 3.33, Math.nextAfter(3.34, -Double.MAX_VALUE));

答案 2 :(得分:0)

Criteria crit;

try {
  crit = session.createCriteria(sillytable.class, "st");
  crit.add(Restrictions.like("field", number + "%"));
}