Edu*_*ues 3 database connection grails datasource
我有一个项目,表格分布在2个数据源之间.我正在根据grails文档http://grails.org/doc/2.0.0.M2/guide/conf.html#dataSourcesAndEnvironments中的 3.3.6主题配置访问表的代码
一切似乎都没问题,但我得到了以下错误
消息:创建名为'transactionManagerPostProcessor'的bean时出错:bean的初始化失败; 嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'transactionManager'的bean时出错:在设置bean属性'sessionFactory'时无法解析对bean'sessionFactory'的引用; 嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'sessionFactory'的bean时出错:init方法的调用失败; 嵌套异常是org.hibernate.MappingException:关联引用未映射的类:br.com.fisgo.Provider
由MappingException引起:关联引用未映射的类:br.com.fisgo.Provider
我知道为什么会出现这个错误?
问候.
我会尝试一下.它不会那么简单,因为公司域链接回提供商它只需要更多的努力
class Company {
String name
String cnpj
String email
Address address
Phone phone
String registration
String source
Set provider = new HashSet<Provider>()
static hasMany = [provider: Provider]
Run Code Online (Sandbox Code Playgroud)
您应该使用较新的文档,例如http://grails.org/doc/latest/guide/conf.html#dataSourcesAndEnvironments
看起来您正试图跨数据源进行链接.这是不可能的,因为每个DataSource都有一个单独的SessionFactory,它们不能直接一起工作.使用Hibernate和NoSQL GORM插件时会出现同样的问题.
你可以很容易地模仿它.给定需要引用的域类Foo Provider,您可以持久保存外键并按需查找(当您在两个域类之间加入时,这正是Hibernate为您所做的):
class Foo {
Long providerId
Provider getProvider() {
providerId ? Provider.get(providerId) : null
}
void setProvider(Provider provider) {
providerId = provider.id
}
static transients = ['provider']
}
Run Code Online (Sandbox Code Playgroud)
由于Groovy将getter/setter对视为属性,因此您可以像使用"真实"链接一样使用它:
def foo = ...
def bar = foo.provider.bar
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2944 次 |
| 最近记录: |