6

基本的に、私の質問はこれと同じですが、Java の (JBoss) Hibernate: How can we order a column as int using hibernate criteria API?

文字列列から int へのキャストで順序制限を作成したいと考えています。何かのようなもの

criteria.addOrder(Order.asc("cast(id as int)"));

例外は、「プロパティを解決できませんでした: [クラス] のキャスト (int としての ID)」です。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 に答える