我正在使用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类的列表相同的东西。
感谢您提供任何帮助。
答案 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的对象。