「A」と「B」という名前の 2 つのテーブルがあります。テーブル 'B' の主キーは、'b_id' (列名) として 'A' テーブルの外部キーとしてマップされます。テーブル 'A' では、'B' (b_id) の主キーが null である可能性があります。つまり、「B」テーブルにはレコードが存在しません。テーブル「B」には列「del_flag」があります
ここで、「A」テーブルからすべての行を選択する必要があります(「b_id」がnullになっている行を含む)。b_idがテーブル 'A' で null でない場合、テーブル 'B' の 'del_flag' が '0' (ゼロかどうか) であることを確認する必要があります。つまり、「B」レコードが存在する場合、「del_flag」が 0 のレコードのみを表示する必要があります。
上記条件の基準の書き方。
次の最初の2つの条件で試しています。私の要件に基づいて、それは機能するはずです。
criteria.createAlias("b", "m"); -----> (1)
criteria.add(Restrictions.or(Restrictions.isNull("b"),Restrictions.eq("m.del_flag", "0"))); --->(2)
//criteria.add(Restrictions.isNull("b")); ----->(3)
私が直面していることを問題にしましょう。
問題は「creatAlias」にあります。「b_id」がnullになっているものだけを選択するように要件を変更しました。(1)(3) の条件のみ実行しました( 2はコメント)。空のレコードを取得しました。
しばらく苦労した後、条件(1)もコメントしました。今、私は結果セットを取得しました。
(1)と(3)を実行すると、結果セットが取得されません。(3)のみが結果セットを提供しています。
これが私 の実際の要件の理由かもしれないと考えてい ます。