2015-06-02 58 views
0

我正在使用Spring Data Jpa併爲我的User類創建了JpaRepository。 存儲庫可以工作,但Spring Tool Suite爲我提供了一種方法的警告。 以下是我的域模型類的實例和庫:爲什麼STS會提醒我有關不匹配的參數?

用戶:

@Entity 
public class User { 

    @Id 
    @GeneratedValue 
    private long id; 

    private String username; 

    @ManyToMany 
    @JoinTable(...) 
    private Set<Role> roles = new HashSet<>(); 

    // Getters & setters 

} 

角色:

@Entity 
public class Role { 

    @Id 
    @GeneratedValue 
    private Long id; 

    private String name; 

    // Getters & setters 

} 

UserRepository:

public interface UserRepository extends JpaRepository<User, Long> { 

    List<User> findByRoles(Set<Role> roles); 

} 

STS標記方法findByRoles()並給出以下消息:Parameter type (Set<Role>) does not match domain class property definition (Set)。 爲什麼我會收到此警告?

+0

我認爲這是STS的Spring Data驗證中的缺陷或缺失功能。請通過https://issuetracker.springsource.com/browse/STS提交錯誤報告,我們將爲下一個版本開發一個修復程序。謝謝!!! –

回答

0

該方法的簽名是錯誤的。它應該是List<User> findByRolesIn(Set<Role> roles),因爲參數是一個集合。

0

改變你的方法名這樣

public interface UserRepository extends JpaRepository<User, Long> { 

List<User> findBy_Roles(Set<Role> roles); 

} 

瞭解詳情爲什麼它抱怨看this頁標題爲「2.4.3。屬性表達式」。

+0

這不應該是必要的,事實上並非如此。我重建了我的工作區,警告消失了。 – stevecross

+0

我給你一個原因和解決方法。如果你解決這個由其他意思然後很高興知道:) –

+0

我試過你的建議,現在它給錯誤'無效派生查詢!找不到類型爲User!'的屬性_Roles。 – stevecross

相關問題