如果使用Criteria / HQL子记录字段匹配,如何获取父记录以及仅匹配的子记录

时间:2019-01-07 04:25:44

标签: java hibernate spring-boot hibernate-criteria

我试图通过搜索诸如firstName,parent的lastName之类的字段以及诸如课程,admissionYearYear之类的孩子的某些字段来获取Student(父母)及其唯一匹配的Studies(孩子)记录

//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
        }
    ]
]

我首先在子表中搜索,然后获取其父表,最后将子表设置为父记录,从而实现了这一目标。

我正在寻找一个Criteria或HQL,因此不使用任何其他逻辑,例如获取父级并将其设置为子级记录。

0 个答案:

没有答案