hibernate nativesql选择不工作。它正在返回空对象

时间:2016-07-22 05:10:26

标签: java hibernate java-ee

我写了一个小程序,通过使用Hibernate本机sql从数据库中获取事物列表。我从数据库中获取空白对象。

Configuration conf = new Configuration();

                //2 Loading hibernate configuration file
                conf.configure("hibernate.cfg.xml");

                SessionFactory factory = conf.buildSessionFactory();

                Session session = factory.openSession();

                SQLQuery qq = session.createSQLQuery("SELECT Employee_Name, EMployee_id, Address FROM employee");
                List<Object[]> l = qq.list();
                System.out.println(":::::::::::::::::::::"+l.size());
                Iterator itr = l.iterator();
                while(itr.hasNext()) {
                    Object[] objs = (Object[])itr.next();
                    System.out.println(objs[0].toString());
                }

列表的大小与数据库的大小相同。但是obj是空白的,当我尝试打印值时,它会发出outofbound异常

enter image description here

2 个答案:

答案 0 :(得分:0)

当我查看API https://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/Query.html#list()时,以下是它的工作方式

enter code here@Test
@SuppressWarnings("deprecation")
public void testEmployee() {
    SQLQuery employeeList = hibernateSession
            .createSQLQuery("SELECT employeeName, employeeId, Address FROM Employee");
    List<Object[]> resultObjects = employeeList.list();
    Assert.assertNotNull(resultObjects);
    Assert.assertEquals(1, resultObjects.size());
    // System.out.println(employees.get(0).getClass().getName());
    for (Object[] employeeObject : resultObjects) {
        Assert.assertEquals("Ram", employeeObject[0]);
        Assert.assertEquals("R18676", employeeObject[1]);
        Assert.assertEquals("Bangalore, India", employeeObject[2]);
    }
}

12:44:08.719 [main] DEBUG org.hibernate.SQL - SELECT employeeName,employeeId,A 来自员工 Hibernate:SELECT employeeName,employeeId,Address FROM Employee 12:44:08.724 [main] DEBUG org.hibernate.loader.Loader - 结果集行:0 12:44:08.724 [main] DEBUG org.hibernate.loader.Loader - 结果行: 测试运行:1,失败:0,错误:0,跳过:0,经过的时间:3.714秒

结果:

测试运行:1,失败:0,错误:0,跳过:0

答案 1 :(得分:0)

将hibernate版本更新为3.2后,问题得以解决。以前我使用3.0.1