2011-05-29 65 views
0

我继承了一个Grails项目,该项目同时具有Hibernate .xml文件和模型的Domain类。这thread使我相信这是不正确的。我正在将该项目从1.0.3升级到1.3.7。我理解它的方式,它在1.0.3中工作,但在1.2之后不再支持。Grails - 休眠XML和域类

Hibernate XML文件提供了对象的所有映射,但Domain中的相同对象具有扩展对象的属性和方法,所以两者都有意义保留。

  • 有什么办法我仍然可以有两全其美(保持 Hibernate映射还有 域对象)的?

  • 如果不是,推荐的方法是什么?

UPDATE:

我希望能有一个Hibernate XML文件Book.hbm.xml以及具有对类额外的方法文件/src/groovy/Book.groovy 。

从它看起来像它们是作为两个独立的事物处理的文档:

问:我怎样才能访问的src来源域类 /Groovy的?

有时候,你正在开发一些 住在 的src/Groovy和您打算使用的服务等文物 实用程序类。 但是,由于这些类是由Grails预编译的 ,因此它不是 可以实例化它们并编写 这样的东西,例如Book.findByTitle(“Action中的Groovy ”)。不过幸运的是,有 一个解决办法,因为这是可能做到这 :

进口 org.codehaus.groovy.grails.commons.ApplicationHolder // ... DEF书= ApplicationHolder.application.getClassForName(“库。书“)。findByTitle(”常规 在行动”

不看起来像这将是做,如果有人想使用Hibernate XML很正常的事情

回答

1

您需要的类定义文件的src/java的和Hibernate映射文件的grails-app/conf目录/休眠Grails 1.0.3 Upgrade Problems解释。

+0

JamesA - 请参阅上面的我的编辑。我真正想要的是能够使用额外的方法来拥有Book.hbm.xml以及src/groovy/Book.groovy,并且能够调用这些方法。你能看到我更新的上面的编辑? – skaz 2011-05-30 14:39:59

+0

Book.hbm.xml告诉Hibernate如何将数据库映射到您的Book.groovy类,并且Grails添加GORM动态方法。你还有困难吗? – jamesallman 2011-06-01 04:31:17

+0

我不确定。我按照你的建议做了,但是由于我发布的一个(可能不相关的)问题没有得到更多的进一步发现:http://stackoverflow.com/questions/6177570/grails-hibernate-domain-nullpointerexception – skaz 2011-06-02 14:01:46

0

根据this: 如果GORM(Grails对象关系映射)不够灵活,您可以选择使用Hibernate映射您的域类,无论是通过XML映射文件还是通过JPA注释。您将能够将Grails领域类映射到更广泛的遗留系统上,并且可以更灵活地创建数据库模式。最重要的是,您仍然可以调用GORM提供的所有动态持久性和查询方法!