在grails应用程序和非grails应用程序之间共享域对象

时间:2013-01-17 21:56:08

标签: grails groovy gradle grails-plugin

我有一个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。

3 个答案:

答案 0 :(得分:0)

我相信你必须手动处理所有与hibernate相关的工件。我在一个项目上做了类似的事情,我创建了一个域对象的Java库,并在Grails,桌面和Android项目之间共享它。它很乏味,但它确实有效。所有注释都必须手动完成。

答案 1 :(得分:0)

复制数据模型会更加简单。

这种服务相互依赖程度意味着你做错了服务。

版本化您的服务,并拥有API。使用JSON来传递API,并且不要尝试任何古怪的方案来共享数据模型。如果您正在共享数据模型,那么您可能只有一项服务,而不是两项服务。

答案 2 :(得分:-1)

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

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

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