2013-03-04 5 views
1

J'ai simples Spring MVC - l'application Mise en veille prolongée, qui a bien fonctionné (inserts & lit les données) lors de la connexion à la base de données MySQL 5.5. Lors de la connexion de la même application à Oracle 10g, il a lu les enregistrements de la base de données, mais n'a pas pu insérer les enregistrements.mode de session Hibernate se prépare par défaut pour Manuel

Sur le débogage, je trouve que flushMode de la session était MANUEL. J'ai explicitement écrit session.flush() après avoir enregistré l'enregistrement, et le code a commencé à fonctionner correctement dans les deux bases de données.

Mon problème - Si je comprends du documentation de mise en veille prolongée, le mode par défaut est AUTO flush. Je ne l'ai pas mis en mode manuel dans mon code, mais de toute façon il se prépare. Comment contrôler cela?

J'utilise Spring 3.1.1 et 3.5.6 Mise en veille prolongée. Voici mes fichiers root-context.xml et servlet-context.xml.

servlet-context.xml:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
    <property name="prefix" value="/WEB-INF/views/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

<context:component-scan base-package="com.home.cfs"/> 

<mvc:annotation-driven/> 

racine context.xml:

<bean id="databaseDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <!-- 
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/> 
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:testdb"/> 
    <property name="username" value="test_usr"/> 
    <property name="password" value="test_usr"/> 
    --> 

    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://localhost:3306/person"/> 
    <property name="username" value="root"/> 
    <property name="password" value="admin"/> 

</bean> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref="databaseDataSource"/> 
    <property name="packagesToScan" value="com.home.cfs"/> 
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration"/> 
    <property name="hibernateProperties"> 
     <props> 
      <!-- <prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> --> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.format_sql">true</prop> 
      <prop key="hibernate.use_sql_comments">true</prop> 
      <prop key="hibernate.hbm2ddl.auto">update</prop> 
     </props> 
    </property> 
</bean> 

<tx:annotation-driven/> 
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory"/> 
</bean> 

S'il vous plaît laissez-moi savoir si plus de détails sont nécessaires.

Merci. vérifier

Répondre

0

si vous avez activé le filtre OpenSessionInViewFilter. Cela semble être un coupable probable pour cela.

Questions connexes