1

我有一个 grails 应用程序,其中包含一些被序列化为 JSON 的域对象。在另一个 java/groovy 项目中,我想使用这些域对象。如果我发布一个插件,看起来只有其他 grails 应用程序可以使用该插件。

我尝试使用域类及其数据创建一个原始的 groovy 项目,在我的 grails 应用程序中,我有这样的存根:

class Fact extends com.domain.Fact {}

然而,当我去运行我的应用程序时,我得到了这些

Caused by MappingException: Missing type or column for column[facts_fact] on domain[DeclarationDefinition] referencing[com.domain.Fact]
->> 303 | innerRun in java.util.concurrent.FutureTask$Sync

我正在做的事情是可能的,还是有更好的方法?

归根结底,我希望能够将 POGO 重新用作 grails 域对象,或者将 grails 域对象导出为 POGO。

4

3 回答 3

0

我相信您必须手动处理所有与休眠相关的工件。我在一个项目中做过类似的事情,我创建了一个域对象的 Java 库,并在 Grails、桌面和 Android 项目之间共享它。它变得乏味,但它奏效了。不过,所有注释都必须手动完成。

于 2013-01-17T22:29:28.477 回答
0

复制数据模型会简单得多。

这种级别的服务相互依赖意味着你做错了服务。

版本化您的服务,并拥有 API。使用 JSON 进行 API 通信,不要尝试任何古怪的方案来共享数据模型。如果您共享一个数据模型,您可能只有一项服务,而不是两项。

于 2014-11-28T14:01:19.070 回答
-1

您可以在 Grails 中设置自己的休眠配置。

因此,您可以将 POGO 重新用作 grails 域对象之类的东西(不确定注入的方法如findByXaddToYs等)。

请参阅 grails 中有关休眠的官方文档:http: //grails.org/doc/latest/guide/hibernate.html

于 2013-01-17T22:20:53.497 回答