【发布时间】:2018-04-10 10:38:01
【问题描述】:
我有一个带有选项域实体的插件(我们称之为插件A)和一个带有强制性实体的插件(插件B)。插件B 还定义了2 个数据源(默认dataSource 和dataSource_redshift)。在我的应用程序中,我最初依赖于插件B,并且可以毫无问题地使用这两个数据源。但是我现在添加了插件 A 作为依赖项到我的应用程序和具有默认数据源的实体似乎运行良好,但如果我正在创建这样的实体:
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,但如果您有: 应用程序应用程序依赖于插件 B 依赖于插件 A 您需要更改应用程序的 Datasource.groovy 以包含数据源'dataSource_redshift' 作为应用程序的 Datasource.groovy 是使用的文件。
-
@adamcooney,实际上应用程序已经可以毫无问题地访问 dataSource_redshift(我有一些代码可以直接调用此数据源),但它不能使用插件 A 中映射到 dataSource_redshift 的实体。所以我想我已经在这里正确配置了 Datasource.groovy。
-
你只需要数据源的名称;将
static mapping = { datasource "dataSource_redshift" }更改为static mapping = { datasource "redshift" }这将查找dataSource_redshift。 -
@adamcooney 是的,我已经找到了这个解决方案并且没有帮助:(
标签: grails grails-orm datasource