Hibernate 原生SQL查询问题总结
HQL 查询SQL就不多说
Query query = getSession().createQuery(hql); List list = query.list(); getHibernateTemplate().find(hql, value);
原生SQL 查询
users表:id name age class_id score表:id user_id scores String sql = "select * from users user,score s where user.id=s.user_id"; //加入事务处理,否则Session未关闭会出异常 SessionFactory factory = null; Session session = null; List tempList = null; try { factory = getSessionFactory(); session = factory.openSession(); session.beginTransaction(); tempList = session.createSQLQuery(queryString) .addEntity("user", User.class).addEntity("s", Score.class).list(); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.getTransaction().rollback(); } finally { session.close(); factory.close(); } return tempList; 读取list内容 Iterator iterator = list.iterator(); while (iterator.hasNext()) { Object[] object = (Object[]) iterator.next(); //学生信息 Users user = (Users) object[0]; //分数信息 Score score= (Score) object[1]; }
问题点
当你的Hibernate的jar包是3.0的时候
1. sqlQuery后面必须加.addEntity()或.addScalar()方法,
.addEntity()返回的类型为实体类,.addScalar("id", Hibernate.INTEGER)返回id的信息,你加几个就返回几个字段的值
list中存储的是Map。
2.当你数据表中的字段有class_id 下划线而实体类中为ClassID时,为有异常提示映射不到列名。
推荐Hibernate使用3.2以上的版本addEntity和addScalar方法可加可不加都可以实现
相关推荐
solarspot 2020-07-28
83520298 2020-07-06
houmenghu 2020-11-17
我心似明月 2020-11-09
oraclemch 2020-11-06
ltd00 2020-09-12
康慧欣 2020-09-10
waveclouds 2020-09-04
蓝色深海 2020-09-15
jincheng 2020-09-01
思君夜未眠 2020-08-25
取个好名字真难 2020-08-06
歆萌 2020-08-03
阳光之吻 2020-08-03
婷婷小屋 2020-07-28
MLXY 2020-07-26
dxbjfu0 2020-07-26
songbinxu 2020-07-19