1. ホーム
  2. java

Criteria APIを使用したORDER BY

2023-10-17 01:57:15

質問

HQLクエリを書くと

Query q = session.createQuery("SELECT cat from Cat as cat ORDER BY cat.mother.kind.value");
return q.list();

すべて順調です。しかし、Criteriaを書くと

Criteria c = session.createCriteria(Cat.class);
c.addOrder(Order.asc("mother.kind.value"));
return c.list();

例外が発生する org.hibernate.QueryException: could not resolve property: kind.value of: my.sample.data.entities.Cat

CriteriaとOrderを使用する場合、"order by"はどのように表現すればよいですか?

どのように解決するのですか?

のエイリアスを作成する必要があります。 mother.kind . これは、次のように行います。

Criteria c = session.createCriteria(Cat.class);
c.createAlias("mother.kind", "motherKind");
c.addOrder(Order.asc("motherKind.value"));
return c.list();