我正在使用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)
。
为什么我会收到此警告?
答案 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;。