我正在执行检索操作以从数据库中获取学生列表。但我变得空虚了#39;数据库中的数据。使用过HibernateTemplate Spring与Hibernate集成,
域类: -
@Entity
@Table(name="student")
public class StdBO {
@Id
private int sno;
private String sname,sadd;
//setters and getters
}
如何使用HibernateCallBack()接口进行搜索操作?这是我第一次将spring与hibernate集成,以下方式是否正确?我尝试了很多方法来使用HibernateTemplate执行搜索操作,但未能获得详细信息
DAO
@Repository
public class StdDAO {
private HibernateTemplate ht;
public void setHt(HibernateTemplate ht) {
this.ht = ht;
}
public List<StdBO> select(){
List<StdBO> list = ht.executeFind(new HibernateCallback() {
public Object doInHibernate(Session ses)
throws HibernateException, SQLException {
Criteria criteria=ses.createCriteria(StdBO.class);
System.out.println("before printing sutdents");
List<StdBO> bos = criteria.list();
System.out.println("students are"+bos);//here getting empty list
return bos;
}
});
return list;
}
XML
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="annotatedClasses">
<list>
<value>com.nt.dao.StdDAO</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.current_session_context_class">thread</prop>
</props>
</property>
</bean>
<bean id="template" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="dao" class="com.nt.dao.StdDAO">
<property name="ht" ref="template" />
</bean>
答案 0 :(得分:0)
您需要开始(并提交)事务来查询数据。您可以session.beginTransaction()
或使用@Transactional
注释手动执行此操作。要使用@Transactional
注释,您需要执行一些额外的弹簧配置:
Hibernate Transaction Annotation Configuration