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()
}
}
Wenn ich versuche, meine app ich BeanCreationException bekommen bootRun:Grails 3.1.6, Hibernate 4. Composite-Fremdschlüssel
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]).
Wenn ich Abschnitt Spaltenzuordnung in Tooth entfernt, dann habe ich den gleichen Fehler ohne diesen Spalten
[tooth_disease_id,tooth_disease_id_column,tooth_disease_nr_version].
Ist es möglich, Schlüsselspalte und referencedColumnName wie in Hibernate explizit zu definieren? Warum gibt es drei Spalten? vor allem tooth_disease_id and tooth_disease_id_column columns
in der gleichen Zeit. Ich habe versucht, ‚primaryKey‘ Name als Verbundprimärschlüssel für Zahn und ‚id‘ einfach wie id-Spalte zu verwenden, aber auf diese Weise hatte ich den gleichen Fehler
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.
Leider habe ich keine Chance Schemastruktur zu ändern und vermeiden Sie zusammengesetzten Schlüssel.
Dank für die Antwort danken, aber es didn 't mir helfen. Immer noch der gleiche Fehler mit drei Spalten für Fremdschlüssel. –