私はテーブルを持っています:
PROCESSES STEP_STATUSES STEPS
--------- ------------- -----------
PROC_ID STAT_ID STEP_ID
PROC_NAME NAME STEP_NUMBER
... STEP_NAME
...
STAT_ID
PROC_ID
Processes テーブルをプロパティ CurrentStep (マップされた STEPS テーブル行) を使用して NHibernate にマップする方法はありますか?
マッピングで必要なことはほとんどできます。
<many-to-one name="CurrentStep" formula="(
select t.step_id
from STEPS t
where PROC_ID = t.PROC_ID
and STEP_NUMBER = nvl((select max(STEP_NUMBER), PROC_ID from STEPS where STAT_ID > 0 and PROC_ID = t.PROC_ID),
(select min(STEP_NUMBER), PROC_ID from STEPS where STAT_ID = 0 and PROC_ID = t.PROC_ID))
)"/>
しかし、このフィールドに fetch="join" を設定することはできません。次のように、CurrentStep プロパティ値を使用して、1 つのクエリですべてのデータを取得したいと考えています。
select t.*, st.*
from PROCESSES t
left outer join (
select STEP_ID, PROC_ID
from STEPS s1
where STEP_NUMBER = nvl((select max(STEP_NUMBER) from STEPS where STAT_ID > 0 and PROC_ID = s1.PROC_ID),
(select min(STEP_NUMBER) from STEPS where STAT_ID = 0 and PROC_ID = s1.PROC_ID))
) s on s.PROC_ID = t.PROC_ID
left outer join STEPS st on st.PROC_ID = s.PROC_ID and st.STEP_ID = s.STEP_ID
パフォーマンスのために必要です。
したがって、質問ID:
- このような複雑な数式フィールドに fetch="join" を設定する方法はありますか?
- このような複雑なサブクエリに参加する方法はありますか?
- マッピングを設定できない場合、そのようなクエリ結果を取得するために ICriteria を作成する方法はありますか?
質問が明確でない場合は申し訳ありませんが、質問があれば明確にするよう努めます/