2013
10.24
10.24
我们在使用hibernate时,有时遇到比较复杂的查询,不好写HQL语句,只能写SQL。但是这时查询出来的是Object对象,我们需要将这些Ojbect对象转换成我们想要的域对象。
如果我们已经在hbm.xml文件里定义过表和领域类的映射关系,这时就很简单,只要加上addEntity方法就可以解决,如下。为了简化,下面的sql语句比较简单。
String sql = "select s.* from software s"; Query query = getHibernateTemplate().getSessionFactory().openSession().createSQLQuery(sql).addEntity(Software.class); return (List<Software>)query.list();
需要强调的是:必须已经定义过software表和Software类的映射关系。
比如我已经在software.hbm.xml有如下定义了:
<hibernate-mapping> <class name="com.lixiaodong.Software" table="software" catalog="lixiaodong"> <id name="id" type="int"> <column name="id" /> <generator class="identity" /> </id> <property name="name" type="string"> <column name="name" length="50" /> </property> </class> </hibernate-mapping>