1

私はこのクエリを持っています:

criteria = session.CreateCriteria(typeof (Building))
    .CreateAlias("Estate", "estate")
    .SetProjection(Projections.ProjectionList()
                       .Add(Property.ForName("Name"), "BuildingName")
                       .Add(Property.ForName("estate.Name"), "EstateName")
                       .Add(Projections.SqlProjection(
                                "(estate1_.BBRMunicipalityNumber + '-' + estate1_.BBREstateNumber + '-' + {alias}.BBRBuildingNumber)" + " as BBRNumber",
                                new[] { "BBRNumber" },
                                new[] { NHibernateUtil.String }),
                            "BBRNumber"))

SQL 文字列に {estate} を書き込むなど、"estate" の SQL エイリアスを取得する方法はありますか? {エステート} は機能しません。SQL文字列にエイリアスをハードコーディングすることになりましたが、それはあまり堅実ではないようです。

ドキュメントを正しく理解していれば、これは可能です。NH2.0.1 を使用しています。

/アスガー

4

2 に答える 2

1

{alias}を使用できます-現在のプロジェクションのエイリアスを参照します。

于 2012-05-01T14:46:07.023 に答える
1

あなたの質問に対する直接的な答えではありませんが、データベースを使用する代わりに、3 つの値を個別にクエリして、コードで連結を実行してみませんか?

あなたの質問に答えるには: Hibernate v3 (java、申し訳ありません) には、Projection インターフェイスにgetColumnAliasメソッドがあります。NHibernate で対応するものを見つけることができません。

乾杯

于 2009-07-02T18:08:29.867 に答える