hibernate 中 createSQLQuery() 用法,我想让它返回一个book对象,怎么写语句。

SessionFactory sf = HibernateUtil.getSessionFactory();
Session s = sf.getCurrentSession();
s.beginTransaction();
SQLQuery sqlquery = s.createSQLQuery("select * from Book b where b.name = bookName").addEntity("b",Book.class);
List<Book> list = sqlquery.list();
s.getTransaction().commit();
return list;
这个写就不对,返回不了想要的结果,请高手指点迷津!不胜感激!!
另外在下面给小弟介绍一下,这个createSQLQuery()的用法。谢谢
结果如果很满意,另加高分。。。
SessionFactory sf = HibernateUtil.getSessionFactory();
Session s = sf.getCurrentSession();
s.beginTransaction();
List<Book> sqlquery = s.createSQLQuery("select * from book where name = bookName").addEntity("b",Book.class).list();
s.getTransaction().commit();

这个不会有错了吧,它查询的是什么值,List?还是BOOK?

SessionFactory sf = HibernateUtil.getSessionFactory();
Session s = sf.getCurrentSession();
s.beginTransaction();
Book book=(Book)s.createSQLQuery("select * from Book b where b.name = bookName").addEntity("b",Book.class);
s.getTransaction().commit();
return book;
使用SQLQuery对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-23
看上去,你的写法应该没啥问题。
不过这个b又不是占位符,你又是单表的查询,是不是应该把b去掉啊。
SQLQuery sqlquery = s.createSQLQuery("select * from Book b where b.name = bookName").addEntity(Book.class);

参考:http://hi.baidu.com/liheng666/blog/item/6b38d3c472d271a08226aca7.html
相似回答