0

Hibernate のバグHHH-2763を回避するために、アプリを Hibernate 3 から Hibernate 4 に更新しようとしています。更新します。SQL ロギングをオンにしました。Hibernate 3 では、挿入と更新があります。Hibernate 4 では、挿入と更新はありません。

OpenSessionInViewFilter クラスのcloseSessionメソッドを次のようにオーバーライドすることで、Hibernate 3 で明示的なフラッシュを実行していました。

public void closeSession(Session session, SessionFactory sessionFactory) {
    session.flush();
    super.closeSession(session, sessionFactory);
}

しかし、Hibernate 4 では、そのメソッドが存在しないため、これはオプションではなくなりました。

セッション ファクトリとトランザクション マネージャーの Hibernate 4 構成は次のとおりです。

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.default_schema">${oracle.default_schema}</prop>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="hibernate.generate_statistics">false</prop>
            <prop key="hibernate.show_sql">${hibernate.showSql}</prop>
            <prop key="hibernate.use_sql_comments">true</prop>
            <prop key="hibernate.format_sql">true</prop>
        </props>
    </property>
    <property name="mappingResources">
         <list> . . . </list>
    </property>
    <property name="annotatedClasses">
         <list> . . . </list>
    </property>
</bean>

<!-- Configure transaction management, enabling @Transactional annotations -->
<tx:annotation-driven transaction-manager="transactionManager" />

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    <property name="nestedTransactionAllowed" value="true" />
</bean>

(編集) そして、これがの構成ですOpenSessionInViewFilter

<filter>
    <filter-name>hibernateFilter</filter-name>
    <filter-class>
        org.springframework.orm.hibernate4.support.OpenSessionInViewFilter
    </filter-class>
    <init-param>
        <param-name>sessionFactoryBeanName</param-name>
        <param-value>sessionFactory</param-value>
    </init-param>
</filter>

私の推測では、フラッシュもコミットもしていません。しかし、なぜ?

4

1 に答える 1