首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-08-21 
Hibernate 原生SQL查询问题总结HQL ?查询SQL就不多说?users表:id name age class_idscore表:id user_id sc

Hibernate 原生SQL查询问题总结

HQL ?查询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方法可加可不加都可以实现

?

?

?

热点排行