Hibernate: null-index-Spalte für die Sammlung in eins-zu-viele-Beziehung
Ich versuche, die Karte ein one-to-many /many-to-one-Beziehung in Hibernate mit einer Liste von Kind-Entitäten. Das gleiche tun mit einem Satz auf andere Beziehungen arbeiten finden, aber ich muss eine Liste mit der Reihenfolge der Kind-Entitäten.
Was ich bisher gemacht habe ist diese:
@Entity
@Table(name="event")
public class Event {
@OneToMany(mappedBy="event", fetch=FetchType.EAGER)
private List<Message> messages; //Message entitiy is the child
//getters+setters+and some other stuff like id
}
Und hier ist die ManyToOne-Seite:
@Entity
@Table(name="message")
public class Message{
@ManyToOne
@JoinColumn(name="eventid")
private Event event;
//getters+setters+and some other stuff like id
}
Auf diesem kann ich eine Nachricht einfügen, wird es Hinzugefügt zur Datenbank (postgres). Aber problem ist, wie die Nachrichten als eine Liste: bekomme ich 2 Ergebnisse die gleiche Meldung, wenn nur eine wurde Hinzugefügt und ist sichtbar, in der Datenbank!
Natürlich, ich habe einige der Forschung getan und gefunden, dass ein index benötigt wird, auf eine Liste. Aber nichts, was ich ausprobiert habe, hat geklappt. Alle, die ich habe ist eine Ausnahme: "null-index-Spalte für die Sammlung...". Keine der Lösungen die ich gefunden habe hier und über google schien zu funktionieren, und es gibt so viele "Lösungen", die ich nicht wirklich wissen, welche von denen sind sogar funktionieren soll!
Hat jemand eine Idee, wie dies zu realisieren, Beziehung? Wäre ich greatfull für jeden Rat!
Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe das gleiche problem mit einer alten version von hibernate (3.5.6) und finden eine gute nicht-invasive Problemumgehung: ändern Sie Ihr
List<Message>
zuSet<Message>
Objekt und verwenden SieHashSet
stattArrayList
.Glück!
Ich weiß, dies ist eine alte post, aber ich lief in dieses problem heute.
Ich entschloss mich, es durch das hinzufügen dieser Annotationen auf die setter-Methode für das übergeordnete Element der Liste:
Wurde ich empfangen von der Ausnahme, denn ich hatte eine "mappedBy" Attribut in meine OneToMany-annotation.
Vielleicht wird dies helfen, wenn Sie nicht bereits dieses problem gelöst.
Ich hatte auch das gleiche problem, wenn auch mit @OrderColumn wie erwähnt von @dan-torrey und @peter wippermann, aber in meinem Fall war das problem tatsächlich trivial. Beim anschließen der Einheiten, ich vergaß, eine Seite. ZB. im obigen Fall habe ich nur getan Nachricht.setEvent(Ereignis) aber nicht Veranstaltung.getMessages().add(Nachricht). Aufgrund wie Hibernate arbeitet, wird dieser dauerhaft in der Datenbank, ohne eine Warnung, es begann erst zu scheitern, wenn ich Hinzugefügt habe, die @OrderColumn später.
Ich weiß, dass das ursprüngliche problem nicht zählen @OrderColumn, jedoch mit der oben genannten Fehlermeldung sollte nur erscheinen, wenn Hibernate ist eigentlich die Verwendung eines index-Spalte.. (vielleicht ist der OP hatte diese Konfiguration in irgendeiner anderen Art und Weise..)