帮助这个noob程序员。我一直在使用 JPA ,但是使用加入声明似乎有些困扰我的逻辑。
例如,我有一个名为 Person
的实体,其字段为name
,age
,gender
。然后例如在查询中
select p from Person p join p.gender g
注意:这只是我困惑的一个例子。
问题是,为什么你会join p
(人)和p.gender
?重点是什么?它能给出什么结果?
答案 0 :(得分:1)
重点在于加入多值关系。加入p.gender
毫无意义,我期望p.gender
属于属性或单值关系(人只能有一个性别)。
但是如果您加入了多值属性,例如Collection<Order> orders
(此人可以拥有多个订单),然后您可以搜索具有特定订单的人员:
select p from Person p join p.orders o where o.price > 12000
此查询将查找所有具有价格高于12000的订单的人员。 没有加入你就无法做到:
select p from Person p where p.orders.price > 12000
这不起作用,因为orders
是多值的,您无法像这样遍历它。您必须使用加入(或其他内容,例如子查询)。