2017-11-13 5 views
0

私はSpringブートJPA Hibernateでカスタムの自己定義の方言を使用するアプリケーションを持っています。Springブートでユーザー定義のDialectが読み込まれない

カスタム方言は次のようになります。

public class JsonPostgreSQL94Dialect extends PostgreSQL94Dialect { 
    public JsonPostgreSQL94Dialect() { 
     this.registerColumnType(Types.JAVA_OBJECT, "jsonb"); 
    } 
} 

この方言は、PostgreSQLの方言を拡張し、jsonbデータ型のサポートが追加されています。

私がアプリケーションを起動すると、Spring Bootを使用して、特定の環境では適切なDialectが読み込まれません。私は、次の方法で方言を定義しようとしている:application.propertiesで

spring.jpa.properties.hibernate.dialect=org.test.util.JsonPostgreSQL94Dialect 
spring.jpa.database-platform=org.test.util.JsonPostgreSQL94Dialect 

さらに私はhibernate.propertiesでこれを定義することができます。ここでは

hibernate.dialect=org.test.util.JsonPostgreSQL94Dialect 

は春ブートログですJava Buildpackを使用したCloud Foundryでの私のアプリケーションの起動について:

2017-11-13T18:03:54.79+0000 [APP/PROC/WEB/1] OUT 2017-11-13 18:03:54.792 INFO 19 --- [   main] org.hibernate.dialect.Dialect   : HHH000400: Using dialect: org.hibernate.dialect.PostgreSQLDialect 

スタートアップは私の定義したDialectを認識しません。デフォルトではPostgreSQLの通常の方言が使用されているため、アプリケーションは認識できないデータ型で失敗します。

私はDialectの定義を上書きしているものがありますか?方言を定義するより適切な方法はありますか?

+0

'application.properties'で' --debug'または 'debug = true'を試しましたか? Hibernate(https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-logging-console-output)に関するさらに詳しい情報を出力することになっています。また、SpringBootの自動設定に関する情報を出力します。これは、あなたのアプリケーションで実行されている自動設定の詳細を示します。 –

+0

また、ローカルでは動作しますが、Cloud Foundryでは動作しない場合は、プロファイル、特に「クラウド」プロファイルを使用してアプリケーションに条件設定があるかどうかを確認してください。 Cloud Foundryにデプロイすると、Java buildpackによって自動的に "クラウド"プロファイルが有効になり、アプリの設定方法が変更されます。 –

答えて

0

プロジェクトがCloud Foundry環境にデプロイされたときに問題があったのは、Spring Auto-Reconfigurationです。 Auto-Reconfiguration Beanはアクティブで、私のアプリケーションのDialectを変更する責任がありました。これは、私のデータベース(PostgreSQL)のVCAP ServicesがBeanによって検出され、自動設定されているためです。私のソリューションは、私のアプリケーションマニフェストに次の環境変数追加することで自動再構成豆をオフにすることでした

:無効に自動再設定して

JBP_CONFIG_SPRING_AUTO_RECONFIGURATION: '{enabled: false}' 

を、私の方言はもはや春で上書きされませんでした。

関連する問題