Mysql Hibernate条件示例查询获取多条记录
我有一个通用条件查询,它返回相同的记录。我认为我的学生储蓄方法有问题。这是我的保存方法Mysql Hibernate条件示例查询获取多条记录,mysql,hibernate,hibernate-criteria,Mysql,Hibernate,Hibernate Criteria,我有一个通用条件查询,它返回相同的记录。我认为我的学生储蓄方法有问题。这是我的保存方法 Student student = new Student(); student.setId(Utility.generateUUID()); student.setClassroom(selectedClassroom); student.setUrl(urlAddress); genericService.save(student); 当我试图从datatable
Student student = new Student();
student.setId(Utility.generateUUID());
student.setClassroom(selectedClassroom);
student.setUrl(urlAddress);
genericService.save(student);
当我试图从datatable获取所有教室时,它返回3个教室对象,它们是相同的,但教室表中只有一条记录。问题是有3个学生记录,其中教室引用了该教室记录
我的条件查询
@Transactional(readOnly = true)
public <T> List<T> getByTemplate(T templateEntity) {
Criteria criteria = getCurrentSession().createCriteria(templateEntity.getClass());
criteria.add(Example.create(templateEntity));
return criteria.list();
}
@Transactional(readOnly=true)
公共列表getByTemplate(T templateEntity){
Criteria=getCurrentSession().createCriteria(templateEntity.getClass());
criteria.add(Example.create(templateEntity));
返回条件。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;
}
公共课堂{
....
@OneToMany(mappedBy=“教室”,fetch=FetchType.EAGER)
私人名单学生名单;
}
公立班学生{
@JoinColumn(name=“教室”,referencedColumnName=“id”)
@manytone(fetch=FetchType.LAZY)
私人教室;
}
尝试将以下内容添加到您的标准中:
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
这将检索教室的不同实体,即使内部联接选择将检索三行(每个用户一行) 尝试将以下内容添加到您的标准中:
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
这将检索教室的不同实体,即使内部联接选择将检索三行(每个用户一行) 为什么您要手动设置
学生
id
而不让休眠
为您管理它?为什么您要手动设置学生
id而不让休眠
为您管理它?将Hibernate.show\u sql properties属性设置为true将显示sql查询执行。您将看到内部JOIN子句build by Example.create()。将属性hibernate.show_sql properties设置为true将显示执行的sql查询。您将通过示例看到内部连接子句build.create()。