mysql - Hibernate 条件示例查询获取多条记录

标签 mysql hibernate hibernate-criteria

我有一个通用条件查询,它返回相同的记录。我认为我的学生保存方法有问题。这是我的保存方法;

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

当我尝试从数据表中获取所有 Classrooms 时,它返回 3 个相同的 Classroom 对象,但 Classroom 表中只有一条记录。问题是有 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();
}

实体;

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;
}

最佳答案

尝试将以下内容添加到您的标准中:

criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

这将为 Classroom 检索不同的实体,即使内部连接选择将检索三行(每个用户一行)。

关于mysql - Hibernate 条件示例查询获取多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19004682/

相关文章:

mysql - SQL 触发器 - 比较新值,如果规则被破坏,恢复到旧值?

java - 简单的 Hibernate 映射问题

java - Spring/Hibernate/HSQLDB 组合的 session /事务问题

java - 如何在mongotemplate中使用orOperator

java - Hibernate Criteria 连接到包含外键的表

mysql - 无限滚动的myBatis偏移位置设置问题

php - 我选择对某些表行进行计数,但计数后面显示数字 '1'?为什么?

php - 如何移动然后删除MySQL中的字段

java - JPA/Hibernate - 多态多对一关系设计

java - 为什么在 Hibernate 5 中不推荐使用条件查询?