我有一个使用一些专有NoSQL DB的Grails应用程序。我禁用了hibernate插件。我有很多域类,它们定义了很多约束,并且有自己的save()和get()实现,它们调用一些处理持久性的java服务。一切都很好。
但现在,我们与客户达成协议,将一些内容直接保存到他们的MySQL数据库中。起初很简单。我配置了他们的数据库连接,启用了hibernate插件,我创建了一个新的域类来处理它。在测试应用程序中一切正常,但是当我将hibernate插件启用到主项目中时,不再启动了。
Hibernate正在尝试将所有域映射到数据库中的表,当然它们不存在(因为它们使用的是NoSQL DB)。
我的问题是:我可以为多个域启用hibernate吗?或者我可以指示某个域不使用hibernate / gorm吗?或者每包? Grails如何为同一个项目处理多个DB?
答案 0 :(得分:2)
您可以设置multiple datasources来处理NoSQL数据库和MySQL数据库。然后,您将获得使用Java服务进行持久化的域对象。
您正在使用它们的约束,但是您是否正在利用Gorm Static API(如动态查找器)?要从hibernate实现中抽象它们,我会尝试将它们从grails-app/domain
移到src/groovy
或在类中使用static mapWith = 'none'
。
答案 1 :(得分:1)
您可以使用域类中的mapWith
选项对其进行配置。
相关问题:Is it possible in grails to disable persistence of a domain class?