---Hibernate执行原生SQL
若使用session.save()插入数据,则对象的自增列id在save()后Hibernate内部会自动将其自增赋值;
而若采用执行原生sql的方式insert数据,则id应该自己赋值,Hibernate内部不会再自动赋值。
---Hibernate执行原生sql时返回List<Object[]>的问题
链接:http://www.cnblogs.com/apem/p/3502039.html
//问题如 HibernateEntityDao entityDao = (HibernateEntityDao) SpringContextUtil.getBean("hedao"); List<Object[]> userList = entityDao.createSelectQuery(sqlStr); for (Object[] obj : userList) {// obj行数据 System.out.println(obj[1]); System.out.println(obj[2]); }
解决方案:使用new List()或者new Map()生成查询结果集
//使用List String query = "select new List(p.code, p.value) from Dictionary p"; List list = session.createQuery(query).list(); //[[001, 四川],[002,北京],[001,四川]] //使用Map,首先不指定alias,则结果的键就按照查询出来的顺序结果,使用0,1来表示key String query = "select new Map(p.code, p.value) from Dictionary p"; List list = session.createQuery(query).list(); //[{1=四川, 0=001},{1=北京, 0=002},{1=四川, 0=001}] //使用Map,指定alias,则结果中的key则为alias String query = "select new Map(p.code as code, p.value as value) from Dictionary p"; List list = session.createQuery(query).list(); //[{value=四川, code=001},{value=北京, code=002},{value=四川, code=001}]
---在Hibernate中使用JDBC API:(待补充)