2017-05-19 9 views
1

Oracle DBに接続するDAOレイヤーのspring jdbcテンプレートを使用したスプリングブートアプリケーションがあります。 DBユーザー名は、照会が実行されるスキーマとは異なります。したがって、クエリが実行されるとき、別のスキーマを使用して実行する必要があり、スキーマのハードコードされた値の前にプレフィックスを付ける必要はありません(For例select * from user1.table.....jdbcテンプレートを使用したスプリングブートアプリケーションでのデータベーススキーマの設定

私はちょっと調べて、それをする。私はJPAを使用した場合は元のために

は、私は単にプロパティspring.jpa.properties.hibernate.default_schema=<schema name>を設定している可能性が、あなたは、Oracle JDBCドライバを使用する必要が春のJDBC

答えて

-1

を使用した場合と同じに設定するのと同等の方法を見つけることができませんでした。

良い例:mykong記事から

# Oracle settings 
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:xe 
spring.datasource.username=system 
spring.datasource.password=password 
spring.datasource.driver-class-oracle.jdbc.driver.OracleDriver 

https://www.mkyong.com/spring-boot/spring-boot-spring-data-jpa-oracle-example/ 
+1

これは私が探している答えを提供していません。上記のプロパティには、スキーマのプロパティはありません。 – ak123

0

は、私は同様の問題に遭遇し、それを行うための理想的な方法を見つけることができませんでした。私は、アプリケーションがロードされたときにSQLでスキーマを設定しました。少なくともJPAのデフォルトスキーマに設定したspring.jpa.properties.hibernate.default_schemaを再利用することができました。

final String schemaName = jpaProperties.getProperties().get("hibernate.default_schema"); 
jdbcTemplate.execute("SET SCHEMA '" + schemaName + "'"); 

これは明らかに理想的ではありませんが、複数の場所でスキーマを定義するよりも優れています。

(注:私はJpaPropertiesとJdbcTemplateの両方をautowired)

関連する問題