私はプラグイン(プラグインA
と呼ぶ)をドメインエンティティとオプションのエンティティ(プラグインB
)を持つもう1つのプラグインを持っています。プラグインB
には、2つのデータソース(デフォルトはdataSource
とdataSource_redshift
)の定義もあります。私のアプリケーションでは、最初に私はプラグインB
に依存しており、問題なく両方のデータソースを使用することができます。しかし、私は今、うまく機能のように見えるが、場合には、私は、このようなエンティティを作成していますデフォルトのデータソースを自分のアプリケーションとエンティティにdependecyとして、プラグインA
を追加しています。アプリケーションの負荷にGrailsプラグインはマルチデータソースにアクセスできない
class RedshiftEntity {
static mapping = {
datasource "redshift"
table name: "table", schema: "public"
id generator: 'assigned', column:'id'
version false
}
...
fields
...
}
を、私は、このようなエラーが表示されます。
Caused by: org.grails.datastore.mapping.core.exceptions.ConfigurationException: DataSource not found for name [dataSource_redshift] in configuration. Please check your multiple data sources configuration and try again.
at org.grails.orm.hibernate.HibernateDatastore.getDatastoreForConnection(HibernateDatastore.java:337)
at org.grails.orm.hibernate.HibernateGormEnhancer.getStaticApi(HibernateGormEnhancer.groovy:47)
at org.grails.datastore.gorm.GormEnhancer.registerEntity(GormEnhancer.groovy:139)
at org.grails.datastore.gorm.GormEnhancer.<init>(GormEnhancer.groovy:122)
at org.grails.orm.hibernate.HibernateGormEnhancer.<init>(HibernateGormEnhancer.groovy:41)
at org.grails.orm.hibernate.HibernateDatastore.initialize(HibernateDatastore.java:414)
at org.grails.orm.hibernate.HibernateDatastore.<init>(HibernateDatastore.java:177)
at org.grails.orm.hibernate.HibernateDatastore.<init>(HibernateDatastore.java:188)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrConstructorNewInstance(ReflectiveInterceptor.java:1075)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142)
... 84 common frames omitted
このエンティティをプラグインB
に移動した場合、dataSource_redshift
でうまくいきます。私に何が足りないか考えてください。
は、私はあなたが使用しているのGrailsのバージョンわからないんだけど、あなたが持っている場合: アプリケーションapp は、プラグインBに依存 あなたがのためのデータソースが含まれているために、アプリケーションのDatasource.groovyを変更する必要が をプラグインに依存しますアプリケーションのDatasource.groovyが使用されているファイルであるため、 'dataSource_redshift' – adamcooney
@adamcooney、実際のアプリは既に問題なくdataSource_redshiftにアクセスできます(このデータソースへの直接呼び出しを実行するコードがいくつかありますが)dataSource_redshiftにマッピングされているプラグインAのエンティティは使用できません。だから私はすでにDatasource.groovyを正しく設定していると思います。 – sphinks
データソースの名前だけが必要です。これは、次に 'dataSource_redshift'をルックアップします '静的マッピング= { データソース "dataSource_redshift" }' に '静的マッピングが= { データソース "赤方偏移" }' を変更します。 – adamcooney