Hallo,
ich nutze zu Testzwecken Hibernate 3.2, das auf einer HSQLDB-Datenbank aufsetzt, die im Speicher vorgehalten wird. Für das Mapping meiner Java-Klassen setze ich Hibernate Annotations ein.
Eine meiner Klassen verursacht beim Anlegen eines neuen Objekts eine Hibernate Exception:
Ich bilde Organisationsstrukturen aus der Realität auf Objekte meiner Organisationseinheit-Klasse ab. Organisationseinheiten sich hierarchisch organisiert. Ist das Feld "parent_unit" ungleich null, ist das betrachtete Objekt in der Hierarchie tiefer angesiedelt als das Parent-Objekt.
Da eine Organisationseinheit nur eine direkte übergeordnete Organisationseinheit besitzen kann, verwende ich folgende Annotation:
/**
* @return the subUnits
*/
@OneToMany(cascade=CascadeType.REFRESH)
@JoinTable( name="organisationseinheit",
joinColumns={@JoinColumn(name="parent_unit", nullable=true)})
public List<Organisationseinheit> getSubUnits() {
return subUnits;
}
Wenn ich aber ein neues Objekt anlegen möchte und anstatt meiner MySQL-Datenbank wie gesagt zu Testzwecken HSQLDB einsetze, wird folgende Fehlermeldung ausgegeben:
[junit] 2007-04-12 14:03:43,984 ERROR [org.hibernate.util.JDBCExceptionReporter] - <Attempt to insert null into a non-nullable column: column: SUBUNITS_ID table: ORGANISATIONSEINHEIT in statement [insert into organisationseinheit (id, name, comment, version, parent_unit, default_right) values (null, ?, ?, ?, ?, ?)]>
[junit] 2007-04-12 14:03:43,984 WARN [de.infobench.hibernate.OrganisationseinheitDAO] - <Error:org.hibernate.exception.ConstraintViolationException: could not insert: [de.infobench.data.Organisationseinheit]>
Dabei weist die Organisationseinheit-Klasse gar keine Property mit Namen "SUBUNITS_ID auf.
Was läuft das falsch.
Vielen Dank für Antworten vorab. ;-)
Michael
|