sql >> データベース >  >> RDS >> Mysql

休止状態の基準でケースバイケースでmysqlを使用する

    解決策を見つけたと思います。

    最後に、Orderの独自のサブクラスを作成し、パブリックString toSqlString(Criteria、CriteriaQuery)メソッドをオーバーライドしました。

    @Override
    public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) {
        final String[] columns = criteriaQuery.getColumnsUsingProjection( criteria, getPropertyName() );
        final StringBuilder fragment = new StringBuilder();
        fragment.append(" case ").append(columns[0]);
        fragment.append(" when 'pending' then 1 ");
        fragment.append(" when 'approved' then 1 ");
        fragment.append(" else 2 end");
        return fragment.toString();
    }
    

    重要な呼び出し(orderクラスの元の実装で見つけた)は

    です。
    criteriaQuery.getColumnsUsingProjection(criteria, getPropertyName());
    

    これにより、caseステートメントを使用して注文したい列のエイリアスにアクセスできました。

    他の誰かがこれを見ている場合、ルートオブジェクトにないプロパティを注文する場合は、条件結合でエイリアスを使用し、カスタムのOrderpropertyNameでそれらのエイリアスを正しく参照するようにしてください。インスタンス化します。



    1. OpenJPAを使用してデータベースから主キー(ID)が取得されない(?)

    2. mysqlワイルドカード(検索で1文字または2文字を無視します)

    3. T-SQLを使用してSQLServerでデータベースのリカバリモデルを取得する方法

    4. 画像がランダムに選択したテーブル名の見つけ方