JPA连接语句逻辑

时间:2013-06-28 07:22:06

标签: jpa

帮助这个noob程序员。我一直在使用 JPA ,但是使用加入声明似乎有些困扰我的逻辑。

例如,我有一个名为 Person 的实体,其字段为nameagegender。然后例如在查询中

select p from Person p join p.gender g

注意:这只是我困惑的一个例子。

问题是,为什么你会join p(人)和p.gender?重点是什么?它能给出什么结果?

1 个答案:

答案 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是多值的,您无法像这样遍历它。您必须使用加入(或其他内容,例如子查询)。