我写了一个小程序,通过使用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异常
答案 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