当前位置: 代码迷 >> SQL >> Hibernate 原生SQL查询有关问题总结
  详细解决方案

Hibernate 原生SQL查询有关问题总结

热度:7   发布时间:2016-05-05 13:52:39.0
Hibernate 原生SQL查询问题总结

HQL ?查询SQL就不多说

?

Query query = getSession().createQuery(hql);List list = query.list();getHibernateTemplate().find(hql, value);
??

原生SQL 查询

?

users表:id name age class_idscore表:id user_id scoresString 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方法可加可不加都可以实现

?

?

?

  相关解决方案