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

在grails应用程序和非grails应用程序之间共享域对象,grails,groovy,gradle,grails-plugin,Grails,Groovy,Gradle,Grails Plugin,我有一个grails应用程序,其中包含一些被序列化为JSON的域对象。在另一个java/groovy项目中,我想使用这些域对象。如果我发布一个插件,看起来只有其他grails应用程序可以使用该插件 我试图用域类及其数据创建一个原始groovy项目,在我的grails应用程序中,我有如下存根: class Fact extends com.domain.Fact {} 然而,当我运行我的应用程序时,我得到了这些 Caused by MappingException: Missing type o

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

您可以在grails中设置自己的hibernate配置

因此,您可以将POGO重用为grails域对象之类的对象,而不确定注入的方法是findByX、addToYs等


请参阅grails中有关hibernate的官方文档:

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

复制数据模型会简单得多

这种服务相互依赖的水平意味着你在做错误的服务


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

我不认为这通常是正确的。1不同的产品可能会对相同的域数据建模-使用相同的数据模型,可能来自共享库,这有助于保持一致性。2当通过RESTAPI进行通信时,服务器和客户端总是处理完全相同的事情。为什么要多次实现源/目标类?