0
SELECT * FROM orderTable order by
CASE priority when 'CRITICAL' THEN 1
when 'HIGH' then 2
when 'MEDIUM' then 3
when 'LOW' then 4
when 'NOT_ASSIGNED' then 5
end ASC ,
CreatedAt ASC;
これは私のmysqlクエリとその動作です。データベース列priority
は、私は、これはそれが文字列の優先順位によってのみソート結果を返す動作していないjpaで注文するケースを選択
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<T> cq = cb.createQuery(entityClass);
Root<T> root = cq.from(entityClass);
cb.selectCase().when(cb.equal(root.get("priority"), "CRITICAL"), 1)
.when(cb.equal(root.get("priority"), "HIGH"), 2)
.when(cb.equal(root.get("priority"), "MEDIUM"), 3)
.when(cb.equal(root.get("priority"), "LOW"), 4)
.when(cb.equal(root.get("priority"), "NOT_ASSIGNED"), 5).;
Order temp2 = cb.desc(root.get("priority"));
cq = cq.orderBy(temp2);
のようにJPAの言語でそれを望んでいた文字列型と、その文字列持つ次の優先順位
です。選択条件は、条件作成クエリには適用されません。