首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Hibernate 中的addEntity()步骤使用

2012-12-23 
Hibernate 中的addEntity()方法使用?[转]hibernate SQLQuery addEntitysql select c.* from clazz c,st

Hibernate 中的addEntity()方法使用

?

[转]hibernate SQLQuery addEntitysql = "select c.* from clazz c,student s where s.class_id = c.id"; List<Clazz> clazzs = (List<Clazz>)session.createSQLQuery(sql).list(); sql = "select c.* from clazz c,student s where s.class_id = c.id";List<Clazz> clazzs = (List<Clazz>)session.createSQLQuery(sql).list();?
特别注意:返回结果是Object[]组成的List,通过Object下标访问属性

?

使用场合:非基于对象的查询,复杂查询

-------------------------------

1.2 简单查询,返回持久化对象

?

sql = "select c.* from Clazz c , student s where s.class_id = c.id "; List<Clazz> clazzs = (List<Clazz>) session.createSQLQuery(sql).addEntity(Clazz.class).list();
??

特别注意: 1.addEntity方法指定返回包含Clazz对象的List 2. 查询出来的持久态对象,clazz对象的studets属性是各代理对象,访问的时候才会去查询DB 使用场合:基于对象的查询,但对象简单查询

--------------------------------

1.3 多表查询,返回多个实体

自己的:

?

List<Object> objects=(List<Object>)session.createSQLQuery("select {s.*},{c.*} from student s,clazz c where s.clazz_id=c.c_id")  .addEntity("s", Student.class).addEntity("c",Clazz.class).list();    Iterator iterator=objects.iterator();    while(iterator.hasNext()) {      Object[] o=(Object[]) iterator.next();   Student student=(Student) o[0];   Clazz clazz=(Clazz) o[1];   System.out.println(student.getName()+","+clazz.getTeacher());  }
?

?

按照原博主的做法,一直有类型转换异常,所以只能用这方方法,求指教


view plaincopy to clipboardprint?

String sql = "select {c.*}, {s.*} from Clazz c , student s where s.class_id = c.id   ";      List<Clazz> clazzs = (List<Clazz>) session().createSQLQuery(sql)                                       .addEntity("c", Clazz.class)                                       .addEntity("s", Student.class).list();   String sql = "select {c.*}, {s.*} from Clazz c , student s where s.class_id = c.id   ";List<Clazz> clazzs = (List<Clazz>) session().createSQLQuery(sql).addEntity("c", Clazz.class).addEntity("s", Student.class).list();
String sql = "select {c.*}, {s.*} from Clazz c , student s where s.class_id = c.id "; List<Clazz> clazzs = (List<Clazz>) session().createSQLQuery(sql) .addEntity("c", Clazz.class) .addJoin("s", "c.students").list(); String sql = "select {c.*}, {s.*} from Clazz c , student s where s.class_id = c.id ";List<Clazz> clazzs = (List<Clazz>) session().createSQLQuery(sql).addEntity("c", Clazz.class).addJoin("s", "c.students").list();String sql = "select c.id, c.name from Clazz c , student s where s.class_id = c.id "; List<Clazz> clazzs = (List<Clazz>) session.createSQLQuery(sql) .addScalar("id", Hibernate.LONG) .addScalar("name", Hibernate.STRING) .setResultTransformer(Transformers.aliasToBean(Clazz.class)).list(); String sql = "select c.id, c.name from Clazz c , student s where s.class_id = c.id ";List<Clazz> clazzs = (List<Clazz>) session.createSQLQuery(sql).addScalar("id", Hibernate.LONG).addScalar("name", Hibernate.STRING).setResultTransformer(Transformers.aliasToBean(Clazz.class)).list();?

?

特别注意:

1. 如果不设置addScalar方法可能会报转型错误的异常.

2.托管查询可以使用投影,只查询指定的列属性

?

来源:http://hi.baidu.com/gacmotor/item/65053176a02a545b0c0a07eb

热点排行