以下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 [testingcenter_id,examschedule_id])
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']
}
}
我很难解决这个问题,而且由于我现有的架构,我想做这项工作,谁能告诉我这是什么问题以及如何解决它?
感谢您分享您的知识。
答案 0 :(得分:0)
在TestingCenterExamSchedule中,您已将testingCenter声明为瞬态属性,我想知道这是否会导致GORM映射问题?无论如何,您似乎不必要地映射列,即使您要映射到现有/遗留表模式,也应该自动创建许多已定义的列。
答案 1 :(得分:0)
我相信这是same issue I'm facing。
Brass tacks:非常肯定这是GORM-Hibernate的错误,which I've logged here。
解决方法是剥离关联映射并创建为您手动加载关联的getter和setter。对于所有用例,这都不一定足够。
¯\ _(ツ)_ /¯