我有一个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。
答案 0 :(得分:0)
我相信你必须手动处理所有与hibernate相关的工件。我在一个项目上做了类似的事情,我创建了一个域对象的Java库,并在Grails,桌面和Android项目之间共享它。它很乏味,但它确实有效。所有注释都必须手动完成。
答案 1 :(得分:0)
复制数据模型会更加简单。
这种服务相互依赖程度意味着你做错了服务。
版本化您的服务,并拥有API。使用JSON来传递API,并且不要尝试任何古怪的方案来共享数据模型。如果您正在共享数据模型,那么您可能只有一项服务,而不是两项服务。
答案 2 :(得分:-1)
您可以在Grails中设置自己的休眠配置。
因此,您可以将您的POGO重新用作grails域对象(不确定注入的方法为findByX
,addToYs
等)。
请参阅有关grails中hibernate的官方文档:http://grails.org/doc/latest/guide/hibernate.html