我正在使用Hibernate和Spring 3.0我试图将值保存到数据库中但当我看到一个控制台时,唯一的选择查询显示插入或更新未显示且保存不起作用
我创建了一个sessionFactory bean并将其注入到Impl
中 <bean id="GetStartedDAOBean" class="com.sample.dao.impl.GetStartedDAOImpl" >
<property name="sessionfactory" ref="sessionFactory">
</property>
</bean
<bean id="GetStartedActionBean" class="com.sample.action.GetStartedAction">
<property name="getStartedDAOImpl" ref="GetStartedDAOBean"></property>
<property name="industryDAOImpl" ref="IndustryDAOBean"></property>
<property name="stateDAOImpl" ref="stateDAOBean"></property>
</bean>
in impl i have
private SessionFactory sessionfactory;
public void setSessionfactory(SessionFactory sessionfactory) {
this.sessionfactory = sessionfactory;
}
public void save(Customer customer)throws IllegalStateException,SystemException{
try {
sessionfactory.openSession().saveOrUpdate(customer);
}
catch(Exception e){
e.printStackTrace();
}
}
当我调试时,sessionFactory中有值,但它不保存任何值。并且也不显示任何插入的查询。没有错误。
任何人都可以帮助我?
答案 0 :(得分:6)
您打开会话(内存中)并将内容保存到其中,但会话仅在您flush()
时保存在数据库中。做一个
Session session = sessionfactory.openSession();
session.saveOrUpdate(customer);
session.flush();
另一种方法是提交事务,因此Hibernate将自动调用flush()
。
答案 1 :(得分:4)
在方法中尝试使用@Transactional
,并将以下内容添加到XML中:
<tx:annotation-driven/>
答案 2 :(得分:-1)
@Transaction
您已经提供了服务类方法,<tx:annotation-driven/>
您必须提供applicaiton-context.xml
文件。
因此,当任何人调用服务类的方法时,transaciton将从spring开始,它将处理提交和回滚。