@OneToOne(optional=false) @JoinColumn(nullable=false) zusammen verwendet
Hab ich stieß in diesem Beispiel in JPA 2.0 FR Spezifikation, 11.1.37. OneToOne-Annotation, Seite 403:
@OneToOne(optional=false)
@JoinColumn(name="CUSTREC_ID", unique=true, nullable=false, updatable=false)
public CustomerRecord getCustomerRecord() { return customerRecord; }
Gibt es einen Grund, dass ich sollte @OneToOne(optional=false)
und zur gleichen Zeit setzen @JoinColumn(... nullable=false)
?
Nicht diese zwei Deklarationen das gleiche? Nicht einer von Ihnen überflüssig?
Sind beide von Ihnen verwendet werden, die in DDL-schema-generation?
InformationsquelleAutor der Frage Piotr Nowicki | 2011-11-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Formal
optional=false
ist eine runtime-Unterricht, um die JPA-Implementierung, und -nullable=false
ist eine Anweisung an den DDL-generator. Sie sind also nicht strikt redundant.Den Unterschied kann bedeutend werden, wenn es Einheit der Vererbung beteiligt. Wenn eine bestimmte Zuordnung besteht nur auf eine Unterklasse, und Sie haben eine einzige Tabelle-Tabelle-pro-Hierarchie, Strategie, dann die OneToOne-mapping kann
optional=false
auf die Besondere Unterklasse enthält die Zuordnung. Aber die eigentliche join-Spalte kann nicht aus nicht-null ist, da dann andere sub-Klassen, teilen sich die Tabelle nicht eingefügt werden!In der Praxis verschiedene Versionen von verschiedenen Anbietern möglicherweise oder möglicherweise nicht interpretieren, entweder man entweder Zeit, caveat emptor.
InformationsquelleAutor der Antwort Affe