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

Jef*_*rey 2 dns orm grails hibernate

如果我有一个MyDomainClass在grails中调用的域类,它看起来像:

class MyDomainClass {
    MyNonDomainClass nonDomainClass    
}
Run Code Online (Sandbox Code Playgroud)

和MyNonDomainClass:

class MyNonDomainClass {
   String name
   int age   
}
Run Code Online (Sandbox Code Playgroud)

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

class MyDomainClass {
    def nonDomainClass
    static mapping = { nonDomainClass type: MyNonDomainClass }
}
Run Code Online (Sandbox Code Playgroud)

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

Sér*_*els 5

Grails不知道如何处理这个类,所以你需要实现一个Hibernate的UserType.一个例子可以在Hibernate的文档中找到.

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

class MyNonDomainClassUserType implements UserType {
  ...
}
Run Code Online (Sandbox Code Playgroud)

Config.groovy中

grails.gorm.default.mapping = {
  "user-type" type: MyNonDomainClassUserTye, class: MyNonDomainClass
}
Run Code Online (Sandbox Code Playgroud)

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