在Hibernate顺序标准中将字符串转换为int

时间:2012-07-18 16:07:13

标签: hibernate

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

2 个答案:

答案 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")注释的整数字段,并在此字段上订购。