テーブル TransactionDeclaration(Id,...) を (TransactionDeclarationId,AccessRightId) を返すパラメトリック関数 fp_Transaction_ACL(userId) に結合する必要があります。結合は内部結合でなければなりません。
Fluent NHibernate を使用して次のマッピングを行いました。
public TransactionDeclarationMap()
{
this.Id(transactionDeclaration => transactionDeclaration.Id);
this.Join(
"fp_TransactionDeclaration_ACL(:AclFilter.userId)",
join =>
{
join.KeyColumn("TransactionDeclarationId");
join.Map(transactionDeclaration => transactionDeclaration.AccessRight, "AccessRightType").CustomType
<AccessRight>().Generated.Always().ReadOnly();
join.Inverse();
join.Fetch.Join();
});
}
関数を挿入または更新してはならないため、ここで説明するように「join.Inverse()」を追加しました。
Nhibernate/hibernate 回避する 結合されたテーブルまたはビューへの挿入
しかし、この逆を追加すると、結合は左外部結合になり、私のユースケースには適していません。関数によって返されないテーブル 'TransactionDeclaration' のレコードをフィルター処理するには、内部結合が必要です。
内部結合を取得するにはどうすればよいですか? または、関数への挿入を避けるために「逆」に代わるものはありますか?