Hibernate 버그 HHH-2763을 해결하기 위해 Hibernate 3에서 Hibernate 4로 응용 프로그램을 업데이트하려고합니다. 응용 프로그램이 실행되는 동안 깨닫기 전까지 원활하게 진행된 것 같습니다. 데이터를 읽을 수 있지만 삽입이나 업데이트를 수행하지 않는 것 같습니다. 나는 SQL logging을 켜 놓았다. Hibernate 3에서는 insert와 update가있다. 최대 절전 모드 4에는 삽입 및 업데이트가 없습니다. Hibernate 4 + Spring 3, No Insert 또는 Updates
우리는 다음과 같이 OpenSessionInViewFilter 클래스 'closeSession
방법을 대체하여 최대 절전 모드 3에 명시 적 플러시를 수행하지 않았다 : 그 방법은 더 이상 존재하지 않기 때문에
public void closeSession(Session session, SessionFactory sessionFactory) {
session.flush();
super.closeSession(session, sessionFactory);
}
그러나 최대 절전 모드 4
, 이것은 더 이상 옵션이 없습니다.<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>
내 생각은 그렇지 않은 것입니다 :
<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
의 구성입니다 : 세션 공장 및 트랜잭션 관리에 대한
내 최대 절전 모드 4 구성은 다음과 플러싱 및 커밋. 하지만 왜?
거래 인터페이스에 대한 정보는 어떻게됩니까? @ transactional 주석에서 update 속성을 변경해야합니다. –
좋든 나쁘 든 우리는'@Transactional' 어노테이션마다'readOnly = true' 또는'readOnly = false'를 명시 적으로 지정합니다. 이게 네가 말하는거야? – Marvo