我有以下星座:
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
?
还是我必须像这样触发另一个查询:
ApplicationUser
查询Privilege
查询applicationuser
谢谢
答案 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
来构造实体。
专业版:运行时效率更高。
缺点:为您准备的更多工作。