6

基本上,我的问题与这个问题相同,但对于 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(,)。

4

2 回答 2

17

尽管这个话题很老,可能问题已经解决了,但我会发布解决方案。也许它将来会对某人有所帮助。

criteria.addOrder(new org.hibernate.criterion.Order("anystring", true) {
            @Override
            public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
                return "cast(id as int)";
            }
        });
于 2013-02-26T10:54:14.397 回答
3

如果列包含整数值,最好的解决方案是将其映射为整数而不是字符串。

如果由于不明原因,这是不可能的,您可以@Formula("cast(id) as number")在您的实体中添加一个带有注释的整数字段并在该字段上排序。

于 2012-07-18T16:14:11.237 回答