class Tooth {
Integer id
ToothDisease toothDisease
static mapping = {
table name: 'AK_TOOTH'
id generator: 'sequence', params: [sequence: 'SEQ_AK_TOOTH']
columns{
toothDisease {
column: 'FK_AK_TOOTH_ID'
column: 'FK_AK_TOOTH_NR_VERSION'
}
}
}
class ToothDisease implements Serializable{
Integer idColumn
Integer nrVersion
static mapping = {
table name: 'AK_TOOTH_DISEASE'
idColumn column: 'ID', generator: 'sequence', params: [sequence: 'SEQ_AK_TOOTH_DISEASE']
nrVersion column: 'NR_VERSION',
id composite ['idColumn','nrVersion']
int hashCode() {
def builder = new HashCodeBuilder()
builder.append (idColumn)
builder.append (nrVersion)
builder.toHashCode()
}
boolean equals (other) {
if (other == null) {
return false
}
def builder = new EqualsBuilder()
builder.append (idColumn, other.idColumn)
builder.append (nrVersion, other.nrVersion)
builder.isEquals()
}
}
Когда я пытаюсь bootRun мое приложение я получаю BeanCreationException:Grails 3.1.6, Hibernate 4. Композитный внешнего ключа
Caused by: org.hibernate.MappingException: Foreign key (FK_1rnajvolkf4rkav5w1hl0l9fk:AK_TOOTH [tooth_disease_id,FK_AK_TOOTH_ID,FK_AK_TOOTH_NR_VERSION,tooth_disease_id_column,tooth_disease_nr_version])) must have same number of columns as the referenced primary key (AK_TOOTH_DISEASE [ID,NR_VERSION]).
Когда я удалил столбец отображения раздел Зуб, то я получил ту же ошибку без этих колонн
[tooth_disease_id,tooth_disease_id_column,tooth_disease_nr_version].
можно явно определить ключевой столбец и referencedColumnName как в спящем режиме? Почему есть три столбца? особенно tooth_disease_id and tooth_disease_id_column columns
в то же время. Я пытался использовать имя «PrimaryKey» в качестве составного первичного ключа для зубов и «ид» простой в столбце идентификаторов, но таким образом, у меня была такая же ошибка
Caused by: org.hibernate.MappingException: Foreign key (FK_1rnajvolkf4rkav5w1hl0l9fk:AK_TOOTH [tooth_disease_id,FK_AK_TOOTH_ID,FK_AK_TOOTH_NR_VERSION,tooth_disease_id_column,tooth_disease_nr_version])) must have same number of columns as the referenced primary key (AK_TOOTH_DISEASE [ID]).But there is only one referenced primary key.
К сожалению, у меня нет возможности изменить структуру схемы и избегайте составного ключа.
Благодарим Вас за ответ, но это 't didn помочь мне. По-прежнему такая же ошибка с тремя столбцами для внешнего ключа. –