为什么 STS 会警告我参数不匹配?
Why does STS warn me about non matching parameters?
我正在使用 Spring Data Jpa 并为我的 User
class 创建了一个 JpaRepository
。
存储库有效,但 Spring Tool Suite 对一种方法发出警告。
以下是我的域模型 classes 和存储库的示例:
用户:
@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
}
用户资料库:
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)
。
为什么我会收到此警告?
像这样更改您的方法名称
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findBy_Roles(Set<Role> roles);
}
有关其抱怨原因的更多详细信息,请参阅 this 页面标题“2.4.3。属性 表达式”。
方法签名错误。应该是List<User> findByRolesIn(Set<Role> roles)
,因为参数是一个集合
我正在使用 Spring Data Jpa 并为我的 User
class 创建了一个 JpaRepository
。
存储库有效,但 Spring Tool Suite 对一种方法发出警告。
以下是我的域模型 classes 和存储库的示例:
用户:
@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
}
用户资料库:
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)
。
为什么我会收到此警告?
像这样更改您的方法名称
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findBy_Roles(Set<Role> roles);
}
有关其抱怨原因的更多详细信息,请参阅 this 页面标题“2.4.3。属性 表达式”。
方法签名错误。应该是List<User> findByRolesIn(Set<Role> roles)
,因为参数是一个集合