【问题标题】:Grails multi datasource domain issueGrails多数据源域问题
【发布时间】:2013-03-07 22:18:42
【问题描述】:

我有一个项目,其中表分布在 2 个数据源之间。 我正在配置代码以根据 grails 文档中的 3.3.6 主题访问表 http://grails.org/doc/2.0.0.M2/guide/conf.html#dataSourcesAndEnvironments

一切似乎都很好,但我收到以下错误

消息:创建名为“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]

【问题讨论】:

    标签: database grails connection datasource


    【解决方案1】:

    您应该使用较新的文档,例如http://grails.org/doc/latest/guide/conf.html#dataSourcesAndEnvironments

    您似乎正在尝试跨数据源进行链接。这是不可能的,因为每个DataSource 都有一个单独的SessionFactory,它们不能直接一起工作。当您使用 Hibernate 和 NoSQL GORM 插件时,也会出现同样的问题。

    不过,你可以很容易地模仿它。给定一个需要引用 Provider 的域类 Foo,您可以保留外键并按需查找它(当您加入两个域类之间时,这实际上是 Hibernate 为您所做的):

    class Foo {
       Long providerId
    
       Provider getProvider() {
          providerId ? Provider.get(providerId) : null
       }
       void setProvider(Provider provider) {
          providerId = provider.id
       }
       static transients = ['provider']
    }
    

    由于 Groovy 将 getter/setter 对视为一个属性,因此您可以像使用“真实”链接一样使用它:

    def foo = ...
    def bar = foo.provider.bar
    

    【讨论】:

    • 嗨,我目前面临同样的问题。这个解决方案对你有用吗?它有任何性能问题吗?是否也可以缓存“提供者”,这样您就不必每次都从数据库中获取它?谢谢!
    • 这行得通,但是当你超过一两个类并讨论框架的节省时间的特性时,它真的很麻烦。这是在 Grails 3.x 版本中解决的问题吗?
    猜你喜欢
    • 1970-01-01
    • 2014-12-25
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多