0

以下 Domain 类在启动时提供此映射异常:

创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套 异常是 org.hibernate.MappingException:Foreignkey (FKA9FB5C607D60EAE9:person_examschedule [testingcenter_examschedule_id dummy_table,testing_center_exam_schedule_testing_center_id,testing_center_exam_schedule_exam_schedule_id]) 必须具有与引用的主键相同的列数 (testingcenter_examschedule_test])

class TestingCenterExamSchedule implements Serializable{

Long testingCenterId
ExamSchedule examSchedule
TestingCenter testingCenter   
int bufferedSlots

static transients = ['testingCenter']

static constraints = {
    examSchedule nullable: false
    testingCenter nullable: false
    testingCenterId nullable: false
    bufferedSlots nullable:false
}

static mapping = {
    table 'testingcenter_examschedule'
    version false
    id composite: ['testingCenterId','examSchedule']
    testingCenterId column: 'testingcenter_id'
    examSchedule column: 'examschedule_id'
    bufferedSlots column: 'buffered_slots'

}

这是我的另一个域类,它也有一个复合键

class RegistrantTestingCenterExamSchedule implements Serializable {

Registrant registrant
TestingCenterExamSchedule testingCenterExamSchedule

static constraints = {
    registrant nullable: false
    testingCenterExamSchedule nullable: false
}

static mapping = {
    table 'person_examschedule'
    version: false
    id composite: ['registrant', 'testingCenterExamSchedule']
    columns {
        registrant column: 'person_id'
        testingCenterExamSchedule column: ['testingcenter_examschedule_id', 'dummy_table']
    }
}

我很难解决这个问题,由于我现有的架构,我想完成这项工作,谁能告诉我问题是什么以及如何解决它?

感谢您分享您的知识。

4

2 回答 2

0

在 TestingCenterExamSchedule 中,您已将 testingCenter 声明为瞬态属性,我想知道这是否不会导致 GORM 映射出现问题?无论如何,您似乎在不必要地映射列,即使您正在映射到现有/旧表模式,您定义的许多列也应该自动创建。

于 2012-04-25T15:00:26.887 回答
0

我相信这是我面临的同样问题

Brass tacks:很确定这是 GORM-Hibernate 的一个错误,我已经在这里记录了

解决方法是剥离关联映射并创建为您手动加载关联的 getter 和 setter。这不一定对所有用例都足够。

¯\_(ツ)_/¯

于 2016-03-22T02:10:14.717 回答