我继承了一个Grails项目,它包含Hibernate .xml文件和Model的Domain类。这thread让我相信这是不正确的。我正在将项目从1.0.3升级到1.3.7。我理解它的方式,它在1.0.3中工作,但在1.2之后不再受支持。
Hibernate XML文件提供了对象的所有映射,但Domain中的相同对象具有扩展对象的属性和方法,因此两者都有意义。
有什么方法可以让两个世界都做到最好(保持 Hibernate Mapping以及 域对象)?
如果没有,建议的推荐方式是什么?
更新:
我希望能够拥有一个Hibernate XML文件Book.hbm.xml以及一个在该类上有额外方法的文件/src/groovy/Book.groovy。
从文档看起来它们被视为两个独立的东西:
问:如何访问域类 来自src / groovy的来源?
有时候,你正在开发一些 住在的实用工作类 src / groovy以及您打算使用的 来自服务和其他文物。 但是,正如那些课程一样 由Grails预编译,但事实并非如此 可以实例化它们并写入 像Book.findByTitle(“Groovy 在行动“)。但幸运的是,有 一种解决方法,因为它可以做到 这样:
进口 org.codehaus.groovy.grails.commons.ApplicationHolder // ... def book = ApplicationHolder.application.getClassForName( “library.Book”)。findByTitle(“常规 在行动“
如果有人想使用Hibernate XML,这似乎不是正常的做法吗?
答案 0 :(得分:1)
您需要 src / java 中的类定义文件和 grails-app / conf / hibernate 中的hibernate映射文件,如Grails 1.0.3 Upgrade Problems中所述。< / p>
答案 1 :(得分:0)
根据this: 如果GORM(Grails对象关系映射)不够灵活,您可以使用Hibernate通过XML映射文件或JPA注释来映射您的域类。您将能够将Grails域类映射到更广泛的遗留系统,并在创建数据库模式时更灵活。最重要的是,您仍然可以调用GORM提供的所有动态持久性和查询方法!