hibernate collection - invalid column index
Habe ich eine Eltern-und Kind-Klasse in hibernate und JPA. Wenn ich versuche zum bestehen der Klasse, bekomme ich eine SQL-exception die Meldung "Ungültiger Spaltenindex".
Ist dies die übergeordnete Klasse:
@Entity
@Table(name = "vnd_base_file_format")
public class VendorBaseFileFormat implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "base_file_format_id")
private int baseFileFormatId;
@Column(name = "vendor_id")
private int vendorId;
@Column(name = "format_name")
private String formatName;
@Column(name = "enabled")
private boolean enabled;
@Column(name = "month_year_format")
private String monthYearFormat;
@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name="base_file_format_id", nullable=false)
@OrderBy("index")
private List<VendorBaseFileDimension> dimensions;
Dies ist der Kind-Klasse:
@Entity
@Table(name = "vnd_base_file_format_dim")
public class VendorBaseFileDimension implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "dimension_id")
private int dimensionId;
@Column(name = "alternate_name")
private String alternateName;
@Column(name = "dimension_index")
private int index;
@Id
@ManyToOne
@JoinColumn(name="base_file_format_id", nullable=false, insertable=false)
private VendorBaseFileFormat format;
Ich Sie einfach erstellen Sie die übergeordnete Klasse, und fügen Sie eine Kind-Klasse zu. Wenn ich rufe entityManager.andauern bekomme ich folgende Meldung:
Hibernate: insert into vnd_base_file_format (enabled, format_name, month_year_format, vendor_id, base_file_format_id) values (?, ?, ?, ?, ?)
Hibernate: insert into vnd_base_file_format_dim (alternate_name, dimension_index, base_file_format_id, dimension_id) values (?, ?, ?, ?)
[21:53:01.159] WARN JDBCExceptionReporter - SQL Error: 17003, SQLState: 99999
[21:53:01.159] ERROR JDBCExceptionReporter - Invalid column index
Jede Hilfe würde geschätzt werden. Ich habe versucht, ein paar Dinge wie Einstellung, zuschaltbarer auf false, aber kein Glück. Ich habe eine Frage gibt, die erwähnte, dass es möglicherweise ein problem mit zusammengesetzten Schlüsseln. Muss ich wirklich haben, um eine einzigartige Sequenz-Spalte auf das Kind, wenn es nur geht, zu existieren als Teil der übergeordneten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann ich sehen, Ihre orderBy annotation wird mit dem Namen des Feldes als "index". Man sollte einen getter für index von anderen Klasse, oder versuchen Sie es zu verändern "dimension_index". Hoffentlich sollte das Problem beheben.
index
zudimensionIndex
, aber ich erhielt die gleiche Fehlermeldungindex
diejenigen zudimensionIndex
als gut.Ich denke, dass problem mit der index-Spalte vorkommt, weil Sie verwenden, Liste Sammlung für das halten von Beziehung. Sie können beispielsweise Folgendes tun:
1) Änderung der Liste in VendorBaseFileFormat Klasse;
2) Fügen Sie @IndexColumn(name="idx") Anmerkung zu deiner Klasse und explizit angeben, indem Sie diese Spalte, die verwendet wird für holding-Liste-index. Sollten Sie auch hinzufügen dieser Spalte *vnd_base_file_format_dim* Tabelle. In diesem tutorial existiert beispielsweise eine bidirektionale eins-zu-viele-Zuordnung anhand einer Liste (Abschnitt 8).
Fand ich eine andere Frage mit einer Lösung, die hilfreich war. Ich habe die einzelnen id-Spalten in einem zusammengesetzten Schlüssel, der Objekt-und diese schien für mich arbeiten.
Die wichtigsten Informationen, die ich brauchte, war in diesem Artikel gefunden hier.
Die Frage, die mir geholfen, es herauszufinden gepostet wurde hier.