grails在hibernate中映射非域类的正确方法

时间:2013-08-13 19:45:43

标签: hibernate grails orm dns

如果我在grails中有一个名为MyDomainClass的域类,如下所示:

class MyDomainClass {
    MyNonDomainClass nonDomainClass    
}

和MyNonDomainClass:

class MyNonDomainClass {
   String name
   int age   
}

是否会正确设置hibernate映射,因为MyNonDomainClass是非域类?或者我是否需要明确指定类型,例如:

class MyDomainClass {
    def nonDomainClass
    static mapping = { nonDomainClass type: MyNonDomainClass }
}

或者MyNonDomainClass不能作为一种类型工作,因为它不是一个域类?

1 个答案:

答案 0 :(得分:5)

Grails不知道如何处理这个类,所以你需要实现一个Hibernate的UserType。可以在Hibernate's docs中找到一个示例。

拥有此课程,您可以在grails.gorm.default.mapping中配置您的类型。例如:

class MyNonDomainClassUserType implements UserType {
  ...
}

Config.groovy中

grails.gorm.default.mapping = {
  "user-type" type: MyNonDomainClassUserTye, class: MyNonDomainClass
}

使用此配置,无需更改域类。