我在mySQL上使用Hibernate。在mySQL中,你可以将LIKE放在查询中,即使是数字(如双)参数和日期,例如你可以写:
select * from sillytable where field like "3.33%"
这将有效。问题是我不能在使用Restrictions.like的标准中执行此操作,实际上它会抛出一个异常,表示它无法将String强制转换为Date或Double。
我该怎么做呢?
答案 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 + "%"));
}