我正在通过 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 填充它,我只需创建一个具有我正在寻找的特定名称的新组。我需要用户属于该组才能返回。但是,生成的 SQL 不包括关于 where 子句中的组的任何内容。
Example<User> example = Example.of(user);
return userRepo.findAll(example, pageable);
以及调用 JPA 存储库的代码片段。
任何想法将不胜感激。