仅在某些域类上使用GORM的Grails或具有多个DB的Grails项目

时间:2013-08-15 12:17:09

标签: hibernate grails gorm grails-2.0 grails-domain-class

我有一个使用一些专有NoSQL DB的Grails应用程序。我禁用了hibernate插件。我有很多域类,它们定义了很多约束,并且有自己的save()和get()实现,它们调用一些处理持久性的java服务。一切都很好。

但现在,我们与客户达成协议,将一些内容直接保存到他们的MySQL数据库中。起初很简单。我配置了他们的数据库连接,启用了hibernate插件,我创建了一个新的域类来处理它。在测试应用程序中一切正常,但是当我将hibernate插件启用到主项目中时,不再启动了。

Hibernate正在尝试将所有域映射到数据库中的表,当然它们不存在(因为它们使用的是NoSQL DB)。

我的问题是:我可以为多个域启用hibernate吗?或者我可以指示某个域不使用hibernate / gorm吗?或者每包? Grails如何为同一个项目处理多个DB?

2 个答案:

答案 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?