【问题标题】:HibernateTemplate query with list带有列表的 HibernateTemplate 查询
【发布时间】:2014-12-16 12:09:11
【问题描述】:

这里是Hibernate初学者,这可能是一个基本问题。

假设我有两个休眠对象:EmployeeDepartment 处于一对多关系中。一个部门可以有多个Employees

我有一个ListDepartment 对象,并且想要检索这些部门中的所有Employees。例如,在 SQL 中很容易:

Select * from Employee where Employee.deptID in (1, 2, 6, 19);

HibernateTemplate 查找中执行此操作的正确方法是什么?我看到的例子看起来非常冗长,涉及创建departmentIDs 的列表,然后覆盖executeFind()。我可以直接使用List<Department> 而不是创建对象 ID 列表来执行此操作吗?

//Verbose example
List Employees = getHibernateTemplate().executeFind(new HibernateCallback<List>() {
    @Override
    public List doInHibernate(Session session) throws HibernateException, SQLException {
        Query query = session.createQuery(
                "select employee" +
                        "from employee e " +
                        "where e.deptID in (:ids) "
        );
        query.setParameterList("ids", ids);
        return query.list();
    }
});

【问题讨论】:

    标签: java sql spring hibernate jpa


    【解决方案1】:

    假设您在 Employee 中有一个部门属性,您可以运行此查询:

    List<Departement> departments = ...
    
    List Employees = getHibernateTemplate().executeFind(new HibernateCallback<List>() {
        @Override
        public List doInHibernate(Session session) throws HibernateException, SQLException {
            Query query = session.createQuery(
                    "select employee" +
                            "from employee e " +
                            "where e.department in (:departments) "
            );
            query.setParameterList("departments", departments);
            return query.list();
        }
    });
    

    【讨论】:

    • 干杯,正是我需要的。
    【解决方案2】:

    我假设您有两个实体 Employee 和 Department,在 Department 中,您有一个员工列表,并希望根据部门 id 获取该列表。

    SELECT emp FROM department d join d.employees emp where d.deptID in(:ids);
    

    这是最好的方法。它会给你一份员工名单。

    我没有给你提供查询的方法,但这可能会对你有所帮助

    【讨论】:

      猜你喜欢
      • 2013-09-25
      • 1970-01-01
      • 2015-11-26
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      相关资源
      最近更新 更多