帮助这个菜鸟程序员。我一直在使用JPA ,但是使用join 语句的逻辑似乎有些困扰我。
例如,我有一个名为Person
, 字段的实体name
, age
, gender
。然后例如在查询中,
select p from Person p join p.gender g
注意:这只是我感到困惑的一个例子。
问题是,为什么你join p
(人)和p.gender
?重点是什么?它能给出什么结果?
帮助这个菜鸟程序员。我一直在使用JPA ,但是使用join 语句的逻辑似乎有些困扰我。
例如,我有一个名为Person
, 字段的实体name
, age
, gender
。然后例如在查询中,
select p from Person p join p.gender g
注意:这只是我感到困惑的一个例子。
问题是,为什么你join p
(人)和p.gender
?重点是什么?它能给出什么结果?
关键在于加入多值关系。加入没有意义p.gender
,我希望p.gender
是属性或单值关系(人只能有一种性别)。
但是如果你加入了多值属性,例如Collection<Order> orders
(一个人可以有多个订单),那么你可以搜索有一些特定订单的人:
select p from Person p join p.orders o where o.price > 12000
此查询将查找所有订单价格高于 12000 的人员。如果没有 join ,您将无法执行此操作:
select p from Person p where p.orders.price > 12000
这不起作用,因为orders
它是多值的,你不能像这样遍历它。您必须使用联接(或其他东西,例如子查询)。