Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Hibernate条件示例查询获取多条记录_Mysql_Hibernate_Hibernate Criteria - Fatal编程技术网

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()。