我使用的是Hibernate而不是mySQL。在mySQL中,您可以将LIKE放在查询中,甚至可以对数字(如double)参数和日期进行类似查询,例如,您可以这样写:
select * from sillytable where field like "3.33%"这将会起作用。问题是我不能在使用Restrictions.like的标准中做到这一点,事实上它抛出了一个异常,说明它不能将字符串转换为日期或双精度。
我该如何用它来做这件事?
发布于 2011-07-06 18:14:28
我发现做我想做的事情的唯一好的解决方案就是使用HQL。在标准中没有明确的方法来做到这一点。
发布于 2011-05-27 17:08:13
我认为这实际上是:
x => 3.33 and x < 3.34在hibernate中,这是:
Restriction.between("field", 3.33, 3.34)Between定义为(min <= expr AND expr <= max)。因此,必须将上限更改为从3.33开始的最大值。(注意:如果上界不可表示,3.34表示为3.33999,则可能出现表示失败。。如果您使用这个已经有效的界限执行nextAfter,您将会遗漏这个值。)
Restriction.between("field", 3.33, Math.nextAfter(3.34, -Double.MAX_VALUE));发布于 2011-05-27 18:05:05
Criteria crit;
try {
crit = session.createCriteria(sillytable.class, "st");
crit.add(Restrictions.like("field", number + "%"));
}https://stackoverflow.com/questions/6149921
复制相似问题