JPA QBE 与 @JoinTable

JPA QBE with @JoinTable

我正在通过 spring-data-jpa 使用最近发布的 QBE 功能。一切似乎都工作得很好,唯一的例外是注释为@JoinTable 的字段似乎不起作用。我在实体上尝试了简单的原语,以及 @JoinColumn 关系,查询按预期执行。但是,一旦我尝试填充一组 @JoinTable 关系的对象,该数据就不会成为我查询的一部分(我检查了记录的 SQL )。我们使用 Hibernate 作为我们的 JPA 提供者,所以问题可能出在实现上。我只是假设我现在做错了什么。

@ManyToMany
@JoinTable(name = "join_table", joinColumns = @JoinColumn(name = "userid", nullable = false), inverseJoinColumns = @JoinColumn(name = "groupid", nullable = false))
private Set<Group> groups= new HashSet<>(0);

那是无效的注释字段。为了为我的 QBE 填充它,我只需创建一个具有我正在寻找的特定名称的新组。我需要用户属于该组才能 return。但是,生成的 SQL 不包含有关 where 子句中组的任何信息。

Example<User> example = Example.of(user);

return userRepo.findAll(example, pageable);

以及调用 JPA 存储库的代码段。

如有任何想法,我们将不胜感激。

目前 Spring Data JPA 的 QBE 特性仅支持 SingularAttributes。因此不能使用@JoinTable。请查看参考手册中的"Executing an Example" section