可以创建一个未映射到数据库表的域类吗?

时间:2011-03-23 20:58:27

标签: grails

我正在使用Grails 1.2.1。我正在将Java应用程序转换为Grails应用程序,我有一个Java对象,我以为我会创建一个grails域。但是,该对象不依赖于底层数据库表。当我启动我的应用程序时,我收到错误,

“ERROR context.ContextLoader - 上下文初始化失败 org.springframework.beans.factory.BeanCreationException:创建名为'messageSource'的bean时出错:bean的初始化失败;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'transactionManager'的bean时出错:在设置bean属性'sessionFactory'时无法解析对bean'sessionFactory'的引用;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'sessionFactory'的bean时出错:init方法的调用失败;嵌套异常是org.hibernate.MappingException:无法确定类型:java.io.InputStream,在表:http_cache_response,对于列:[org.hibernate.mapping.Column(body)]“

我滥用域名了吗?这个对象应该只是src / groovy中的常规类吗?谢谢, - 戴夫

4 个答案:

答案 0 :(得分:8)

是的,域对象是专门的数据库映射对象。不是DDD意义上的域名。

根据类是否是单例,它应该是服务或src / groovy中的类。

答案 1 :(得分:4)

可以创建一个没有底层域对象的类。有两种情况:

1)您希望在Controller中使用对象,您可以创建CommandObject

2)如果你想创建一个纯java / groovy类,你可以在src / java或src / groovy中创建它。

答案 2 :(得分:0)

我想说如果你不打算将这个类用作grails样式的域对象,最好把它放在src / java中,并像其他类一样使用它们。

答案 3 :(得分:0)

您可能想签出域类的mapWith属性:

static mapWith = "none"应该可以解决问题