Я пытаюсь получить информацию об учащемся (родительском) и его единственной соответствующей записи об учёбе (дочернем) путем поиска в таких полях, как firstName, lastName родительского и в некоторых полях дочернего объекта, например Course, admissionYear
//parent
@Entity
@Table(name="student")
public class Student implements Serializable {
@LazyCollection(LazyCollectionOption.FALSE)
@OneToMany(orphanRemoval = true,mappedBy = "student",cascade=CascadeType.ALL)
private List<Studies> studies;
//setters getters
}
//child
@Entity
@Table(name = "studies")
public class Studies {
@JsonIgnore
@ManyToOne
@JoinColumn(name = "studentId")
private Student student;
//setters getters
}
Возможно, что у студента может быть два курса в одном и том же поступлении в год, поэтому, если я ищу по поступлению в течение года, я ожидаю, что следующее:
[
{
id:1,
firstName:"hussain",
studies:[
{
id:1,
course:"A-level",
admissionYear:2018
}
]
},
id:1,
firstName:"hussain",
studies:[
{
id:2,
course:"B-level",
admissionYear:2018
}
]
]
Я достиг этого, сначала выполнив поиск в дочерней таблице, затем получил ее родителя и, наконец, установил дочернюю запись в родительскую запись.
Я ищу критерий или HQL, поэтому без использования какой-либо дополнительной логики, такой как получение родительского элемента и установка для него дочерней записи.