2016-08-22 118 views
1

我通過spring-data-jpa使用最近發佈的QBE功能。一切似乎工作得很好,只有一個例外是註釋爲@JoinTable的字段似乎不起作用。我試過簡單的實體元素以及@JoinColumn關係,並且查詢按預期執行。但是,一旦我嘗試填充一組@JoinTable關係的對象,那些數據就不會成爲我查詢的一部分(我檢查了記錄的SQL)。我們使用Hibernate作爲我們的JPA提供者,所以可能問題在於實現。我只是假設我現在做錯了什麼。@JoinTable JPA QBE

@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庫中的片段。

任何想法將不勝感激。

回答

2

此時Spring Data JPA的QBE功能僅支持SingularAttribute s。因此@JoinTable不能使用。請參閱參考手冊中的"Executing an Example" section

+0

感謝您的回覆。如果我需要一個PluralAttribute作爲查詢的一部分,是否有一種方法可以將QBE與其他東西結合起來以完成此操作,還是需要在添加支持之前不使用QBE? –

+0

你可以嘗試構建你自己的'Specification',就像在[ExampleSpecification]中完成一樣(https://github.com/spring-projects/spring-data-jpa/blob/master/src/main/java/org/ springframework/data/jpa/repository/support/SimpleJpaRepository.java#L806),添加你需要的路徑,然後將它傳遞給'JpaSpecificationExecutor'。 –