如何在休眠状态下以List <class>的形式获取结果

时间:2018-12-28 06:15:50

标签: spring hibernate hql

我正在使用hibernate(4),并进行了以下配置。

<bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
            </props>
        </property>
        <property name="annotatedClasses">
            <list>
                <value>com.myproj.model.Employee</value>
            </list>
        </property>
    </bean>

    <bean id="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <bean id="empdao" class="com.myproj.dao.EmpDao">
    <qualifier value="q1"></qualifier>
    <property name="sessionFactory" ref="sessionFactory"></property>

在实施基本查询时(从数据库中选择所有数据),我将结果作为对象列表获取,但我希望将该结果作为自定义类的列表获取(在我的情况下为Employee)。下面是DAO文件(empDao)中的相同代码段。

List<Employee> list = new ArrayList<Employee>();
Session s = sessionFactory.openSession();


try {
s.beginTransaction();

list= s.createQuery("from Employee").list();
s.getTransaction().commit();

} catch (Exception e) {
System.out.println(e);
}
return list;

在这里,我正在将列表作为对象数组。.帮助我获得与Employee类的列表相同的东西。

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:3)

我建议您使用TypedQuery而不是Query。例如:

代替此:

List<Employee> list = new ArrayList<Employee>();
list = s.createQuery("from Employee").list();

像这样使用:

List<Employee> list = new ArrayList<Employee>();
TypedQuery<Employee> q = s.createQuery("from Employee", Employee.class);
list = q.list();

在第一种情况下,createQuery返回Query类的对象,我们在该对象上调用list方法。但是在第二种情况下,createQuery将返回TypedQuery的对象。