基本上,我的问题与这个问题相同,但对于 Java (JBoss) Hibernate: 我们如何使用 hibernate 标准 API 将列排序为 int?
我想创建一个从字符串列强制转换为 int 的顺序限制。就像是
criteria.addOrder(Order.asc("cast(id as int)"));
例外是“无法解析属性:[Class] 的 cast(id as int)”。我已经用 int 和 integer 尝试了 cast(as) 和 convert(,)。
基本上,我的问题与这个问题相同,但对于 Java (JBoss) Hibernate: 我们如何使用 hibernate 标准 API 将列排序为 int?
我想创建一个从字符串列强制转换为 int 的顺序限制。就像是
criteria.addOrder(Order.asc("cast(id as int)"));
例外是“无法解析属性:[Class] 的 cast(id as int)”。我已经用 int 和 integer 尝试了 cast(as) 和 convert(,)。
尽管这个话题很老,可能问题已经解决了,但我会发布解决方案。也许它将来会对某人有所帮助。
criteria.addOrder(new org.hibernate.criterion.Order("anystring", true) {
@Override
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
return "cast(id as int)";
}
});
如果列包含整数值,最好的解决方案是将其映射为整数而不是字符串。
如果由于不明原因,这是不可能的,您可以@Formula("cast(id) as number")
在您的实体中添加一个带有注释的整数字段并在该字段上排序。