0

以下のSQLを生成するための基準を作成することは可能ですか:

select name from (select distinct name from person) as aliasname  order by lower(name);

ここには2つのSQLがあります -

  1. select distinct name from person

  2. select name from <output of 1> as aliasname order by lower(name)

基準を作成してから実行したいcriteria.list()

4

2 に答える 2

1

これはあなたのニーズに合うと思います:

criteria.addOrder(Order.asc("name").ignoreCase())
        .setProjection(Projections.distinct(Projections.property("name")))
        .list();

または、この基準はサブクエリとして名前プロジェクションを持つ DetachedCriteria を使用します。

DetachedCriteria distinctNamesCriteria = DetachedCriteria.forClass(Person.class);
distinctNamesCriteria.setProjection(Projections.distinct(Projections.property("name")));

criteria.add(SubQueries.propertyIn("name", distinctNamesCriteria))
        .addOrder(Order.asc("name").ignoreCase())
        .list();
于 2013-06-26T12:55:21.037 に答える