1

私には2つのエンティティがOrganisationMemberあり、User

Anには、タイプOrganisationMemberと呼ばれるオブジェクト プロパティがあります。UserUser

プロパティによって大文字と小文字を区別しない sory を実行する NHibernate クエリを作成しようとしていUser.Emailます... (ユーザーはさまざまなケースでシステムに電子メールを入力します)。

SQLFunction Projection を使用して、基本的に DB ですべてを大文字にし、それによって順序付けできることがわかりました。しかし、これを子オブジェクトに適用するのに問題があります。これが私がこれまでに持っているものです。

var query = Session.QueryOver<OrganisationMembership>();

query.RootCriteria.SetFetchMode("User", FetchMode.Eager);

var projection = Projections.SqlFunction("UPPER", NHibernateUtil.String, Projections.Property("Email"));

query.OrderBy(projection).Asc();

プロジェクションで「Eメール」が何であるかわからないと私に言い続けます。また、投影を次のように変更しようとしました

var projection = Projections.SqlFunction("UPPER", NHibernateUtil.String,  Projections.Property("User.Email"));

何か案は ?

4

1 に答える 1

1

必ず:

User user = null;

query.JoinAlias(p => p.User, () => user);

に相当

query.JoinAlias(p => p.User, () => user, JoinType.InnerJoin);

その後

projection = Projections.SqlFunction("UPPER", 
                                     NHibernateUtil.String,
                                     Projections.Property(() => user.Email));

Hibernate では、常に明示的にJoins. 暗黙的な結合はありません。

于 2013-09-13T11:53:50.277 に答える