2017-05-05 1 views
0

J'ai essayé de configurer MyBatis avec Spring MVC pour qu'il fonctionne avec plusieurs bases de données. J'ai une page qui essaie de se connecter à l'un des DB pour récupérer des données, de sorte qu'il peut être rempli dans les listes déroulantes.Configuration de MyBatis avec Spring MVC pour plusieurs sources de données

Maintenant, je ne suis pas sûr de ce qui ne va pas avec cette configuration, mais je reçois l'erreur suivante:

]] Root cause of ServletException. org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLException: ORA-06576: not a valid function or procedure name 

Je fournirai le fichier XML ici pour référence

<bean id="dataSource1" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> 
     <property name="url" value="jdbc:oracle:thin:@1.1.2.5:1529:DITOS" /> 
     <property name="username" value="return" /> 
     <property name="password" value="return" /> 
    </bean> 

    <!-- scan for mappers and let them be autowired --> 
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
     <property name="basePackage" 
      value="p.com.ent.appl.return.dev.dao,p.com.ent.appl.return.dep.dao,p.com.ent.appl.return.dao.otheruser" /> 
     <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory1" /> 
    </bean> 


    <!-- Declare a transaction manager --> 
    <bean id="cashReturnTx" 
     class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
     <property name="dataSource" ref="dataSource1" /> 
    </bean> 

    <!-- define the SqlSessionFactory, notice that configLocation is not needed 
     when you use MapperFactoryBean --> 
    <bean id="sqlSessionFactory1" class="org.mybatis.spring.SqlSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource1" /> 
     <property name="configLocation" value="WEB-INF/mybatis/sqlmap-config.xml" /> 
     <!-- <property name="mapperLocations" value="classpath:/com/vrn/ent/dev/daoxml/*.xml" 
      /> --> 
     <property name="mapperLocations" 
      value="classpath*:/p/com/ent/appl/return/**/daoxml/*.xml" /> 
    </bean> 


    <bean id="sqlSession1" class="org.mybatis.spring.SqlSessionTemplate"> 
     <constructor-arg index="0" ref="sqlSessionFactory1" /> 
    </bean> 

    <bean id="dataSource" 
     class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> 
     <property name="url" value="jdbc:oracle:thin:@4.24.80.15:1522:LM" /> 
     <property name="username" value="RETURN" /> 
     <property name="password" value="OWNER" /> 
    </bean> 

<!-- scan for mappers and let them be autowired --> 
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
     <property name="basePackage" 
      value="p.com.ent.appl.return.dev.dao,p.com.ent.appl.return.dep.dao,p.com.ent.appl.return.dao.otheruser" /> 
     <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> 
    </bean> 

    <bean id="otherUserTx" 
     class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
     <property name="dataSource" ref="dataSource" /> 
    </bean> 


    <!-- define the SqlSessionFactory, notice that configLocation is not needed 
     when you use MapperFactoryBean --> 
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="configLocation" value="WEB-INF/mybatis/sqlmap-config.xml" /> 
     <!-- <property name="mapperLocations" value="classpath:/com/vrn/ent/dev/daoxml/*.xml" 
      /> --> 
     <property name="mapperLocations" 
      value="classpath*:/p/com/ent/appl/return/**/daoxml/*.xml" /> 
    </bean> 

    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> 
     <constructor-arg index="0" ref="sqlSessionFactory" /> 
    </bean> 
</beans> 
+0

Nous l'avons résolu. Le problème réel était la propriété name = "mapperLocations". Ici, nous avons donné le même endroit. Mais nous avons changé l'emplacement et l'avons rendu différent pour les deux sources de données. – Shiva1281969

Répondre

1

Selon l'exception: BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLException: ORA-06576: not a valid function or procedure name, un DB est frappé.

En savoir plus sur l'erreur ORA-06576.

Le problème est similaire à la façon dont la procédure est appelée. La bonne façon est

La configuration montre que les mêmes mappeurs peuvent être utilisés avec les deux sources de données, que se passe-t-il si les schémas cibles sont différents?