0

我正在使用 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>

在 impl 我有

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 中有值但它不保存任何值。并且也不显示任何插入的查询。没有错误。

任何人都可以帮助我吗?

4

3 回答 3

6

您打开会话(内存中)并在其中保存一些内容,但会话仅在您flush(). 做一个

Session session = sessionfactory.openSession();
session.saveOrUpdate(customer);
session.flush();

另一种方式是提交事务,这样 Hibernate 会自动调用flush().

于 2013-03-06T12:30:03.980 回答
4

尝试使用@Transactionalat 方法,并将以下内容添加到您的 XML 中:

<tx:annotation-driven/>
于 2013-03-06T12:24:06.477 回答
-1

@Transaction你已经放弃了服务类的方法,<tx:annotation-driven/>你必须在applicaiton-context.xml文件中放弃。

因此,当任何人调用服务类的方法时,事务将由 spring 启动,它将处理提交和回滚。

于 2013-03-06T14:18:01.033 回答