1

一般的な基準クエリがあり、同じレコードが返されます。生徒の保存方法に問題があると思います。これが私の保存方法です。

    Student student = new Student();
    student.setId(Utility.generateUUID());
    student.setClassroom(selectedClassroom);
    student.setUrl(urlAddress);
    genericService.save(student);

データテーブルからすべてのクラスルームを取得しようとすると、同じ 3 つのクラスルーム オブジェクトが返されますが、クラスルーム テーブルには 1 つのレコードしかありません。問題は、Classrooms がこの Classroom レコードを参照している 3 つの Student レコードがあることです。

私の基準クエリ;

    @Transactional(readOnly = true)
public <T> List<T> getByTemplate(T templateEntity) {
    Criteria criteria = getCurrentSession().createCriteria(templateEntity.getClass());
    criteria.add(Example.create(templateEntity));
    return criteria.list();
}

エンティティ;

public class Classroom{

    ....
    @OneToMany(mappedBy = "classroom", fetch = FetchType.EAGER)
    private List<Student> studentList;
}


public class Student{

    @JoinColumn(name = "classroom", referencedColumnName = "id")
    @ManyToOne(fetch = FetchType.LAZY)
    private Classroom classroom;
}
4

1 に答える 1