我有两个名为“A”和“B”的表。表“B”主键映射为“A”表中的外键“b_id”(列名)。在表“A”中,“B”(b_id)的主键可能为空。即在'B'表记录不存在。表“B”将有列“del_flag”
现在我需要从“A”表中选择所有行(包括将“b_id”设为空的行)。如果表'A'中的b_id不为空,那么我需要检查表'B'的'del_flag'是否为'0'(是否为零)。即如果存在“B”记录,我只需要显示“del_flag”为 0 的记录。
如何写出上述条件的标准。
我正在尝试以下前两个条件。根据我的要求,它应该可以工作。
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)给出了结果集。
我想 这可能是我 实际要求的原因。