JPA QBE和@JoinTable

时间:2016-08-22 22:35:33

标签: spring hibernate jpa spring-data query-by-example

我通过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存储库的代码段。

非常感谢任何想法。

1 个答案:

答案 0 :(得分:2)

目前,Spring Data JPA的QBE功能仅支持SingularAttribute。因此无法使用@JoinTable。请参阅参考手册中的"Executing an Example" section