2

我有以下星座:

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

谢谢

4

2 回答 2

2

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

优点:在运行时更高效。

缺点:为您提供更多工作。

于 2019-05-03T13:58:36.060 回答
2

我应该等待我的问题,因为我自己刚刚找到了答案。
所以这是我的答案:
只需将此 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 查询来获取权限。

于 2019-05-03T07:20:15.737 回答