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



我有以下星座:

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;
}

现在我想通过login查询一个ApplicationUser,这是由一个简单的 sqlQuery完成的。
我现在的问题:
是否有任何与 jpa 的连接获取相关的 spring-data-jdbc 相关的东西,以便我可以在一个声明的查询中获取关联的Set<Privilege> privileges
还是我必须像这样触发另一个查询:

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

谢谢

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

优点:运行时效率更高。

缺点:为你做更多的工作。

我应该等待我的问题,因为我自己刚刚找到了答案。
所以我的答案是:
只需在您的存储库函数中键入此 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查询来获取权限。

最新更新