2012-03-06 47 views
5

我正在研究将应用程序的持久映射从hibernate hbm文件移动到grails域对象。该模式不符合许多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。不幸的是,它已经开放了近两年,没有任何变化。有没有一种解决方法来改变数据库中的列?

回答

1

我认为唯一的办法就是目前(Grails的2.1)把在酒吧的映射,

class Bar { 
    String bar, quz 

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

除了使用内置变量创建自定义休眠用户类型为你的酒吧类的。然后,您可以映射到你想要随意选择自己喜欢的列名的自定义类型:

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

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

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

class Bar{ 
    String baz, qux 
}