hibernate - Gorm使用复合键进行多对一映射

标签 hibernate grails gorm

我正在尝试使用复合键映射ManyToOne关系。

我希望能够从RecoverySetup访问OnesolPeNames域对象,就像recoverySetup.onesolPeNames.peNameU
我已将以下代码添加到我的RecoverySetup映射中。

        oneSolution {
                column name: 'division' 
                column name: 'peid'
            };

表A
class RecoverySetup implements Serializable {

    static constraints = {

    }

    static mapping = {
        table "recovery_setup"

        id composite: ["division", "peid", "orgkey"]

        columns{
            division column: 'division'
            peid column: 'peid'
            orgkey column: 'org_key'

            oneSolution {
                    column name: 'division' 
                    column name: 'peid'
                };
        }
    }

    String division
    String peid
    String orgkey
    OnesolPeNames oneSolution

}

表B
class OnesolPeNames implements Serializable {

    static constraints = {

    }

    static mapping = {
        table "ONESOL_pe_names"

        id composite: ["division", "peid"]

        columns{
            division column: 'division', length: 8, sqlType: "char"
            peid column: 'pe_id', length: 12, sqlType: "char"
            peNameU column: 'pe_name_u', length: 50, sqlType: "char"
        }
    }

    static hasMany = [recoverySetups: RecoverySetup]

    String division
    String peid
    String peNameU

}

我得到以下异常

Caused by MappingException: Repeated column in mapping for entity: org.hri.pisr.domain.RecoverySetup column: division (should be mapped with insert="false" update="false")



我也发现了这个帖子One-to-Many With Composite Keys and Different Column Names in Grails

最佳答案

由GUL Foreign key (FK_ must have same number of columns as the referenced primary key解决

RecoverySetup类实现Serializable {

static mapping = {
    table "recovery_setup"
    id composite: ["division", "peid", "orgkey"]
    columns {
        orgkey column: 'org_key', length: 8, sqlType: "char"

        oneSolName {
            column name: 'division'
            column name: 'peid'
        }
    }
    oneSolName updateable: false, insertable: false
}

static belongsTo = [oneSolName: OnesolPeNames]
...

}

关于hibernate - Gorm使用复合键进行多对一映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31147029/

相关文章:

c# - NHibernate 自动重命名 C# 中的列名

java - Grails/java 单资源池线程队列

grails - GORM按has_many排序

grails - 获取类的所有 transient 字段

java - 创建类路径资源中定义的名为 'sessionFactory' 的 bean 时出错...找不到类

java - Hibernate 教程 - 在哪里放置映射文件?

java - 使用 Like 和 % % 运算符的 hibernate 命名查询?

hibernate - 如何配置 Grails 3.1.1 以使用 Hibernate 5

grails - Gorm findAllBy 里面 gsp 的疑问

grails - Grails 3.0.0缺少findOrCreateBy()