如何更改Grails嵌入的列映射

时间:2012-03-06 21:57:38

标签: grails gorm

我正在考虑将我的应用程序的持久性映射从hibernate hbm文件移动到grails域对象。该架构不符合Grails的许多列命名约定,包括组合列名称。我想要做的是:

class Foo{
   Bar bar
   static embedded = ['bar']
   static mapping = {
         bar.baz column:'baz'
         bar.quz column:'qux'
   }
}

class Bar{
  String baz, qux
}

此问题有jira。不幸的是,它已经开放了将近两年,没有任何变化。是否有一种解决方法可以解决这个在db中更改列的问题?

3 个答案:

答案 0 :(得分:2)

而不是使用嵌入变量为您的Bar类创建自定义hibernate UserType。然后,您可以将该自定义类型映射到您想要的任何列名称:

static mapping = {
    bar type: BarUserType, { 
        column name: "bar"
        column name: "quz"
    }
}

答案 1 :(得分:1)

我认为目前唯一的方法(grails 2.1)将映射放在Bar中,

class Bar {
    String bar, quz

    static mapping = {
        baz column: "baz"
        quz column: "quz"
    }
}

答案 2 :(得分:0)

我找到的解决方法是使用@ grails.util.Mixin而不是嵌入:

@grails.util.Mixin(Bar)
class Foo{
   static mapping = {
         baz column:'bazz'
         quz column:'quxx'
   }
}

class Bar{
  String baz, qux
}