Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring data, find by property of a nested object

I have the following code:

@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;
}

I've set up a spring data mongodb repository and I'm trying to create a method that will return me a List<Student> based on a className that I pass in as parameter. Based on everything I've read, I assumed that the following would work:

public List<Student> findByStudentGradesClassName(final String className);

but that gives an error saying that the parameter type should be a Grade object. I really only want to pass in a String className.

Is this possible?

like image 269
DraegerMTN Avatar asked Apr 08 '19 18:04

DraegerMTN


1 Answers

You would have to separate nested fields with underscore:

public List<Student> findByStudent_Grades_ClassName(final String className);

Note, that you still have to start field names with uppercase.

like image 119
Andronicus Avatar answered Nov 17 '22 05:11

Andronicus