如何加入获取关联的子关系

时间:2019-05-03 07:06:39

标签: spring-data-jdbc

我有以下星座:

public final class ApplicationUser {

private final @Id
@Wither
long applicationUserId;

@NotNull
@Size(min = 4, max = 20)
private final
String login;

@NotNull
@Email
private final
String eMail; 

@Wither
private Set<Privilege> privileges;
}

现在我想通过一个简单的SQL ApplicationUser通过其login查询一个Query
我的问题
是否有任何与jpa的join fetch相关的spring-data-jdbc相关内容,以便我可以在一个声明的查询中获取关联的Set<Privilege> privileges
还是我必须像这样触发另一个查询:

  1. 通过登录ApplicationUser查询
  2. 通过外键Privilege查询applicationuser

谢谢

2 个答案:

答案 0 :(得分:1)

我应该等我的问题,因为我自己才找到答案。
所以这是我的答案:
只需将此sql查询键入到您的存储库函数中即可:

@Query("select a.applicationuserid, a.email, a.login, p from applicationuser a left outer join privilege p on a.applicationuserid = p.applicationuser where lower(a.login) = lower(:login)")

在相应的日志中,已触发了第二个sql查询以获取特权。

答案 1 :(得分:1)

Your answer描述了执行此操作的默认方法。如果要避免多余的选择,可以使用包含联接的语句,并使用ResultSetExtractor来构造实体。

专业版:运行时效率更高。

缺点:为您准备的更多工作。