0

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

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

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

我的问题是:我可以只为几个域启用休眠吗?或者我可以指示某些域不使用休眠/戈姆吗?还是按包装?Grails 如何为同一个项目处理多个数据库?

4

2 回答 2

2

您可以设置多个数据源来处理 NoSQL 数据库和 MySQL 数据库。然后,您将留下使用 Java 服务进行持久性的域对象。

您正在对它们使用约束,但您是否像在它们上使用动态查找器一样利用 Gorm 静态 API?为了将它们从休眠实现中抽象出来,我会尝试将它们从类grails-app/domain中移出src/groovystatic mapWith = 'none'在类中使用。

于 2013-08-15T13:53:46.037 回答
1

您可以使用mapWith域类中的选项进行配置。

相关的 SO 问题:是否可以在 grails 中禁用域类的持久性?

于 2013-08-15T13:53:27.973 回答