Java 不循环地从HQL检索联接表结果

Java 不循环地从HQL检索联接表结果,java,hql,Java,Hql,我试图从数据库中检索联接表的结果,我当前的代码是这样的 质疑 代码 DBServiceImpl是您自己编写的吗?您的问题是hql,但看起来更像sql?您好,先生,请查看我的编辑。我已经添加了executeListSQLQuerySo,您使用的是Hibernate,但出于某种原因使用的是本机SQL?您可以直接在这里使用hibernate for ORM来简化工作吗?本机SQL如果使用得当,性能可能会更高。请参阅示例:如何将本机SQL结果直接映射到HibernathOK中的实体。您的实体就是我要查找

我试图从数据库中检索联接表的结果,我当前的代码是这样的

质疑

代码


DBServiceImpl是您自己编写的吗?您的问题是hql,但看起来更像sql?您好,先生,请查看我的编辑。我已经添加了executeListSQLQuerySo,您使用的是Hibernate,但出于某种原因使用的是本机SQL?您可以直接在这里使用hibernate for ORM来简化工作吗?本机SQL如果使用得当,性能可能会更高。请参阅示例:如何将本机SQL结果直接映射到HibernathOK中的实体。您的实体就是我要查找的实体。DBServiceImpl是您自己编写的代码吗?您的问题是hql,但看起来更像sql?您好,先生,请查看我的编辑。我已经添加了executeListSQLQuerySo,您使用的是Hibernate,但出于某种原因使用的是本机SQL?您可以直接在这里使用hibernate for ORM来简化工作吗?本机SQL如果使用得当,性能可能会更高。请参阅示例:如何将本机SQL结果直接映射到HibernathOK中的实体。您的实体就是我要寻找的那个实体。
SELECT a.Name,a.employeeNo,b.status,b.amount FROM Tbemployee a left join Tbtransact b on a.employeeno = b.employeeno WHERE b.status = '7'
DBService dbsrvc = DBServiceImpl();
List<EmployeeForm> formList = new ArrayList<EmployeeForm>();
List<Object[]> list = dbsrvc.executeListSQLQuery(query, params);
for(Object[] row: list){
    EmployeeForm form = new EmployeeForm();
    form.setEmpno(row[0]);
    form.setName(row[1]);
    form.setStatus(row[2]);
    form.setAmount(row[3]);
    formList.add(form);
}
public List executeListSQLQuery(String sQuery, Map parameters) {
    // ---
    EMPLOYEEDB service = (EMPLOYEEDB) RuntimeAccess.getInstance().getServiceBean(
            DBNAME);

    try {
        service.begin();
        Session session = service.getDataServiceManager().getSession();

        SQLQuery query = session.createSQLQuery(sQuery);
        query.setProperties(parameters);
        List list = query.list();
        service.commit();

        // ---
        return list;

    } catch (Exception ex) {
        logger.warn("Error executing query", ex);
        service.rollback();
    }

    return null;
}