2013
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>

回复功能关闭


Hit Counter by http://yizhantech.com/