Java 弹簧数据,按嵌套对象的属性查找
我有以下代码:Java 弹簧数据,按嵌套对象的属性查找,java,spring,spring-boot,jpa,spring-data-jpa,Java,Spring,Spring Boot,Jpa,Spring Data Jpa,我有以下代码: @Entity public class StudentEntity { @Id private String id; private Student student; ... } public class Student { private String name; private List<Grade> grades; } public class Grade { private String cla
@Entity
public class StudentEntity {
@Id
private String id;
private Student student;
...
}
public class Student {
private String name;
private List<Grade> grades;
}
public class Grade {
private String className;
private String grade;
}
但这会给出一个错误,即参数类型应该是Grade
对象。我真的只想传入一个字符串className
这可能吗?您必须用下划线分隔嵌套字段:
public List<Student> findByStudent_Grades_ClassName(final String className);
public List findByStudent\u Grades\u ClassName(最终字符串ClassName);
请注意,您仍然必须以大写开头字段名。使用Spring boot 2.1.8/Spring data 2.1.10,我发现下划线是不必要的。在@ManyToOne(所以不是列表)嵌套字段上测试,并使用countAll。。。例如,如果您有X.myName和X.MY.name关系,则repository.underline中的语句仍然很方便。我知道这是不常见的情况,但我需要在X和相关组件中复制值。两者都将匹配FindByMyName,因此会出现错误。幸运地找到了Bymy_Name wokrs,正如预期的那样。Sonarqube不喜欢方法名称中的下划线。@Akash该规则可以始终禁用,它更具可读性,因为您可以清楚地看到层次结构中的级别
public List<Student> findByStudent_Grades_ClassName(final String className);