我对HQL相对较新。我注意到的是,当您添加返回字段时,它可以返回更少的结果。
例如,如果我运行以下查询:
select cit.noun.value,
cit.type
from ComponentInventoryType cit
where
cit.deleted = false
我获得的结果比运行此查询的结果更多:
select cit.noun.value,
cit.type,
cit.suffixes.suffix
from ComponentInventoryType cit
where
cit.deleted = false
当然,两个查询之间的唯一区别是添加了cit.suffixes.suffix字段。
我的第一个猜测是,如果任何条目的后缀本身为空 - 它根本不会返回该条目?
如果是这种情况 - 是否有办法解决这个问题,以便该字段为空或为空 - 而不是仅仅跳过整个条目?
提前致谢。
答案 0 :(得分:2)
通过添加cit.suffixes.suffix,您已从ComponentInventoryType表连接到后缀表。我猜你已经在包含后缀的集合周围映射了@OneToMany注释。
从SQL的角度来看,如果表B的连接失败,则从表A到表B的直接连接将不会从A返回一行(即,表B中没有行,其中有一个表A的索引列。
在SQL语言中,这是一个JOIN或NATURAL JOIN情况(取决于你想要的术语)。
在基本SQL中,您可以使用OUTER JOIN或LEFT OUTER JOIN来允许连接表(B)为空。
事实上,如果它是一对多关系,你可以在添加后缀时获得更多行,正如我上面所暗示的那样。因此,如果A中的每一行都有n个后缀,那么您将拥有n * sizeof(A)行。
答案 1 :(得分:0)
您可以添加检查字段不等于null的位置 后缀!= NULL