我有一个使用一些专有 NoSQL DB 的 Grails 应用程序。我禁用了 hibernate 插件。我有许多定义了许多约束的域类,并且有自己的 save() 和 get() 实现,它们调用一些处理持久性的 java 服务。一切正常。
但现在,我们与客户达成协议(protocol),将一些内容直接保存到他们的 MySQL 数据库中。一开始很简单。我配置了他们的数据库连接,启用了 hibernate 插件,并创建了一个新的域类来处理它。在测试应用程序中一切正常,但是当我在主项目中启用 hibernate 插件时,不再启动。
Hibernate 正在尝试将所有域映射到数据库中的表,当然它们不存在(因为正在使用 NoSQL DB)。
我的问题是:我可以只为几个域启用 hibernate 吗?或者我可以指示某些域不使用 hibernate/戈姆吗?还是按包装? Grails 如何为同一个项目处理多个数据库?
最佳答案
您可以设置multiple datasources照顾 NoSQL 数据库和 MySQL 数据库。然后,您将留下使用 Java 服务进行持久性的域对象。
您正在对它们使用约束,但您是否像在它们上使用动态查找器一样利用 Gorm 静态 API?为了将它们从 hibernate 实现中抽象出来,我会尝试将它们从 grails-app/domain
中移出。至src/groovy
或使用 static mapWith = 'none'
在类里面。
关于hibernate - 仅在某些领域类或具有多个数据库的 Grails 项目上使用 GORM 的 Grails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18252449/