帮助这个菜鸟程序员。我一直在使用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它是多值的,你不能像这样遍历它。您必须使用联接(或其他东西,例如子查询)。