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();

もう 1 つの方法は、トランザクションをコミットすることです。したがって、Hibernate は自動的に を呼び出しますflush()

于 2013-03-06T12:30:03.980 に答える
4

メソッドで試して@Transactional、XMLに以下を追加します。

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

@Transactionあなたはサービスクラスのメソッドを与えて<tx:annotation-driven/>おり、ファイルで与える必要がありapplicaiton-context.xmlます。

したがって、いずれかがサービス クラスのメソッドを呼び出すと、トランザシトンは春までに開始され、コミットとロールバックまで処理されます。

于 2013-03-06T14:18:01.033 に答える