[Edit: Anscheinend ist dies nur ein Problem für Arrays und FoxyBOA Antwort könnte direkt (oder gerade ist) die Antwort.]Warum enthalten verknüpfte Sammlungen Nullwerte? (Hibernate, Annotation, Frühling)
Meine Frage bezieht sich auf diese Software: Hibernate3 + Annotation , Spring MVC, MySQL und in diesem Beispiel auch Spring Security.
Ich frage mich, warum Sammlungen, die automatisch von Hibernate zugeordnet werden Nullwerte für jede Zeilennummer der untergeordneten Tabelle enthalten (neben den Elementen, die korrekt sind). Mein Beispiel:
Ich habe einen Benutzer und eine Behörden Tisch, der Primärschlüssel der Benutzer Tabelle Benutzername ist, die als Fremdschlüssel dient. Im Moment gibt es 13 Zeilen in meinem Behörden Tabelle. Wenn ich einen Benutzer aus der Datenbank (MySQL InnoDB) abzurufen und Ruhezustand ruft automatisch die Behörden des Benutzers zu dieser Abbildung entsprechen:
@OneToMany
@JoinColumn(name = "username")
@IndexColumn(name="id") // "id" was the primary key and is used to sort the elements
public Authority[] getAuthorities() {
return authorities;
}
public void setAuthorities(Authority[] authorities) {
this.authorities = authorities;
}
... I mit einer Sammlung am Ende „Stellen“, die 14 (0-13) Elemente, von denen nur vier nicht-null sind (vier Zeilen in der Datenbanktabelle gehören zu diesem bestimmten Benutzer, also ist das richtig). Soweit ich erkennen, bin ich mit Hibernate Standardwerte für Eigenschaften wie Fetchmode usw. Ich bin der Benutzer wie folgt erhalten:
Criteria criteria = getSession().createCriteria(User.class);
criteria.add(Restrictions.eq("username",username));
User user = (User) criteria.uniqueResult();
Die Logging-Informationen aus org.hibernate.loader.loader richtig „erwähnt“ vier Reihen für das Ergebnisset. Der Benutzer hat jedoch die vier richtigen Elemente plus zehn Nullwerte im Array. In meinem speziellen Beispiel führt dies zu dieser Ausnahme:
java.lang.IllegalArgumentException: Granted authority element 0 is null - GrantedAuthority[] cannot contain any null elements
Ich habe einige Indizes hinzugefügt und entfernt, bekomme aber immer noch 14 Werte mit vier korrekten Werten bei diesen Array-Indizes, die dem Wert meiner ID-Spalte entsprechen. Ich denke wirklich, dass hier mein Problem liegt. Könntest du ein bisschen mehr "ausarbeiten", ich verstehe nicht ganz, was du meinst. Danke bis jetzt! – Wolfram