13

私はHibernate3.2を使用しており、条件を使用してクエリを作成しています。多対1の関連付けを追加して「並べ替え」たいのですが、それがどのように行われるのかわかりません。Hibernateクエリは次のようになります。

select t1.a, t1.b, t1.c, t2.dd, t2.ee
from t1
inner join t2 on t1.a = t2.aa
order by t2.dd   <-- need to add this

私はcriteria.addOrder( "assnName.propertyName")を試しましたが、機能しません。私はそれが通常のプロパティに対して実行できることを知っています。私は何かが足りないのですか?

4

2 に答える 2

23

わかりました、答えが見つかりました。うまくいくとは思わなかったことを試してみましたが、驚いたことにうまくいきました。私はこれを試していました:

Criteria criteria = super.getSession().createCriteria(WipDiscreteJob.class);

criteria.addOrder(Order.asc("assnName.propertyName"))

しかし、実際に機能したのは次のとおりです。

Criteria criteria = super.getSession().createCriteria(WipDiscreteJob.class);
Criteria assnCrit = criteria.createCriteria("assnName");

assnCrit.addOrder(Order.asc("propertyName"));

addOrder() メソッドは主要な基準でのみ使用でき、関連基準では使用できないと想定していました。

于 2009-05-15T20:47:48.487 に答える
14

私は同じ問題を抱えていましたが、次のように解決することもできます。

Criteria criteria = super.getSession().createCriteria(WipDiscreteJob.class)
  .createAlias("assnName","a")
  .addOrder(Order.asc("a.propertyName"));

createAlias を使用すると、基準を元のエンティティ (この場合は WipDiscreteJob.class) に根ざしたままにしておくことができるため、必要な場合に基準を構築し続けることができます (たとえば、元のエンティティからのプロパティによる 2 番目の順序が必要な場合)。 .

于 2010-04-09T21:54:09.100 に答える