基本上,我的问题与此问题相同,但对于Java(JBoss)的Hibernate:How can we order a column as int using hibernate criteria API?
我想创建一个订单限制,从字符串列转换为int。像
这样的东西criteria.addOrder(Order.asc("cast(id as int)"));
例外情况是“无法解析[类]的属性:cast(id为int)”。我已经尝试了使用int和整数转换(as)和转换(,)。
答案 0 :(得分:16)
尽管话题很老,可能问题已解决,但我会发布解决方案。也许这对某人来说将来会有所帮助。
criteria.addOrder(new org.hibernate.criterion.Order("anystring", true) {
@Override
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
return "cast(id as int)";
}
});
答案 1 :(得分:3)
如果列包含整数值,则最佳解决方案是将其映射为整数而不是字符串。
如果由于晦涩的原因,这是不可能的,您可以在实体中添加一个用@Formula("cast(id) as number")
注释的整数字段,并在此字段上订购。