为什么STS警告我不匹配的参数?

时间:2015-06-02 08:07:40

标签: java spring spring-data-jpa spring-tool-suite

我正在使用Spring Data Jpa并为我的JpaRepository类创建了User。 存储库可以运行,但Spring Tool Suite会为一个方法提供警告。 以下是我的域模型类和存储库的示例:

用户:

@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)。 为什么我会收到此警告?

2 个答案:

答案 0 :(得分:1)

方法的签名是错误的。它应该是List<User> findByRolesIn(Set<Role> roles),因为参数是一个集合。

答案 1 :(得分:0)

像这样更改您的方法名称

public interface UserRepository extends JpaRepository<User, Long> {

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

}

有关其抱怨的更多详细信息,请参阅this页面标题&#34; 2.4.3。属性表达式&#34;。