2011-01-07 2 views
3

Ich habe 2 Tabellen, Anfrage und ELEMENT mit einer Eins-zu-viele-Beziehung, so dass eine Anfrage viele Elemente hat.Wie ordne ich Hibernate-Sammlungen mit der NOT NULL-Spaltenbedingung von Oracle durch?

Ich möchte Oracle NOT NULL Einschränkung auf Fremdschlüssel Spalte ELEMENT.ENQUIRY_ID erzwingen, da dies Best-Practice ist. Ich habe die folgende Sammlung auf dem Objekt Anfrage:

@OneToMany(cascade = CascadeType.ALL) 
@JoinColumn(name = "ENQUIRY_ID", referencedColumnName = "ID") 
private Set<Element> elements = new HashSet<Element>(); 

Wenn ich die NOT NULL erzwingen ich folgende stacktrace erhalten:

Verursacht durch: java.sql.BatchUpdateException: ORA-01400: nicht kann einfügen NULL in („Elemente“. „ENQUIRY_ID“)

So Hibernate offensichtlich wird, um die Sammlung von Elementen, bevor die Mutter Anfrage persistierenden und dann zurück und danach ein Update auf dem Fremdschlüsselfeld zu tun.

Gibt es eine Möglichkeit, die NOT NULL-Einschränkung für das Feld für die Sammlung von Fremdschlüsseln zu erzwingen?

Antwort

2

Haben Sie versucht nullable = false in @JoinColumn?

+0

Dank axtavt, das hat funktioniert, einfach, wenn Sie wissen, wie! Ich kann nirgendwo eine Beschreibung finden - obwohl möglicherweise nicht richtig gesucht wird -, habe aber über das Szenario, Ihre Lösung und wie Hibernate die Anmerkungen unter http://www.andrew-eells.com/2011 interpretiert, gebloggt/01/09/Winterschlaf-Fremdschlüssel-Sammlungen-Datenbank-Best-Practice / –

Verwandte Themen