0

主キーではなく、列の既知の値がある CreateCriteria を使用して、データベース内の 1 つのテーブルから行を選択したいので、複数の行が一致します。テーブルには更新情報が含まれているため、各行のバージョン番号を含む列があり、これに基づいて、主な質問とともに単一の一意の行が得られます。

次の行に沿って何かを試してみましたが、うまくいくはずですが、もっと良いものを使用できるはずです。ある種のRestriction.Max("Avtal")があればいいのに

var result = Session.CreateCriteria(typeof(Avtal))
.Add(Restrictions.Eq("Avtal", avtal))
.Add(Restrictions.Eq("Versionsnummer", 
Session.CreateCriteria((typeof(Avtal)))
.Add(Restrictions.Eq("Avtal", avtal))
.SetProjection(Projections.Max("version"))
.UniqueResult<int>()))
.List<Avtal>();

正しい方向へのポインターは非常に役に立ちます。いいえ、CreateQuery を使用したくない、HQL を直接記述したり、そのようなものを使用したりしません。基準を使用し、それに固執したいと考えています。

ありがとう

4

1 に答える 1

0

同じものを探しているときにあなたの質問に出くわしましたが、後でこれに出くわしました:

var result = Session.CreateCriteria(typeof(Avtal)) .Add(Order.Desc("Versionsnummer")) // sort it and take the first one .UniqueResult())) .List();

于 2010-06-29T02:35:42.730 に答える