GRAILS多个复合外键共享同一个表字段?

时间:2011-09-09 08:06:03

标签: grails foreign-keys gorm composite-key

我正在尝试使用现有旧式旧版db的grails。我到处都有复合键(PK和FK)和...更多FK共享同一个表列。一个例子:

所有表共享“公司”值。

class SalesOrder implements Serializable{

...
static hasMany = [items: SalesOrderItem]

static mapping = {
    table 'MYORDERTABLE'
    id composite: ["company", "orderId"], generator: "assigned"

比我的销售订单项目:

class SalesOrderItem implements Serializable{
     ....
     Material mat

     static belongsTo = [order: SalesOrder]

     static mapping = {

    table 'MYORDERITEMSTABLE'
    id composite: ["order", "lineNumber"], generator: "assigned"
    lineNumber column: 'ITEMNUMBER'

        columns { 
           order { column name:'COMPANY'
           column name:'ORDERNUMEBR' }
        }

所有以前的代码都有效(仅限grails 2.0 M1)。我的“订单”有一个复合PK(公司+ orderId),我的“orderLine”有一个复合PK(公司+ orderId + orderLineId)。

当我有其他属性与复合键共享“公司”属性作为FK的一个元素时出现问题,如

columns{    
    mat {   column name: 'COMPANY', insertable:false, updateable:false
    column name: 'MATTYPE'
            column name: 'MATCODE'
            column name: 'MATCODEEXT1'
            column name: 'MATCODEEXT2'
         } 
 }

这不起作用,出现的错误是

Repeated column in mapping for entity: SalesOrderItem 
column: COMPANY (should be mapped with insert="false" update="false")

我被困在这里。如果只是一个案例,我会使用一些便宜的&肮脏的解决方法,但我有很多像这样的情况。

你有什么建议吗?暗示?解?任何帮助表示赞赏?

谢谢, 洛伦佐


更新

我发现以下帖子与hibernate的问题基本相同:

should-hibernate-be-able-to-handle-overlapping-foreign-keys

似乎仍然是一个尚未解决的问题:

hibernate jira

没有冬眠,我想没有什么样的。至于解决方法,我正在考虑使用事件aferLoad,beforeInsert,beforeUpdate来加载/更新与此FK链接的域类。

0 个答案:

没有答案