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 特性仅支持 SingularAttribute
s。因此不能使用@JoinTable
。请查看参考手册中的"Executing an Example" section。
我正在通过 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 特性仅支持 SingularAttribute
s。因此不能使用@JoinTable
。请查看参考手册中的"Executing an Example" section。