sqlCoalesce関数を投影しているnhibernateの問題があります。
2つの異なるエンティティからの同じ名前の2つの文字列プロパティを比較しています。結果のSQLでは、最初のエンティティのみからの同じプロパティが次のように比較されます。
var list = Projections.ProjectionList();
list.Add(
Projections.SqlFunction("Coalesce",
NHibernateUtil.String,
Projections.Property<TranslatedText>(tt => tt.ItemText),
Projections.Property<TextItem>(ti => ti.ItemText)));
var q = Session.QueryOver<TextItem>()
.Left.JoinQueryOver(ti => ti.TranslatedItems);
qを評価すると、このSQLが生成されます
coalesce(this_.ItemText, this_.ItemText)
RHSのthis_
はエイリアステーブルである必要があります
を使用することはできます Projections.Alias(Projections.Property<TranslatedText>(tt => tt.ItemText), "ttAlias")
が、で「ttAlias」をマップする方法がわかりませんJoinQueryOver
。
そこでエイリアスを作成することもできますが、名前を付ける方法がわかりません。
TranslatedText ttAlias = null;
...
JoinQueryOver(ti => ti.TranslatedItems, () => ttAlias)