Was ich will:
@Embedded(nullable = false)
private Direito direito;
Jedoch, wie Sie wissen, es gibt kein solches Attribut @Embeddable.
Gibt es einen richtigen Weg, dies zu tun? Ich will keine workarounds.
InformationsquelleAutor der Frage André Chalella | 2009-08-24
Embeddable (Komponenten-oder composite-Elemente, was Sie wollen, Sie zu nennen) enthalten in der Regel mehr als eine Eigenschaft und damit zugeordnet sind, die mehr als eine Spalte. Die gesamte Komponente null kann daher auf verschiedene Weise behandelt werden; J2EE-Spezifikation schreibt nicht vor, eine oder andere Weise.
Winterschlaf hält-Komponente NULL sein, wenn alle seine Eigenschaften sind NULL (und Umgekehrt). Können Sie erklären daher eine (jede) der Eigenschaften zu sein, die nicht null (innerhalb
@Embeddable
oder als Teil@AttributeOverride
auf@Embedded
) zu erreichen, was Sie wollen.Alternativ, wenn Sie mit der Hibernate-Validator können Sie kommentieren Ihre Immobilie mit
@NotNull
obwohl diese nur als Folge von in-app-level-check, nicht auf db-Niveau.InformationsquelleAutor der Antwort ChssPly76
Ist es möglich, verwenden Sie "hibernate.create_empty_composites.aktiviert", da Hibernate 5.1 um dieses Verhalten zu ändern (siehe https://hibernate.atlassian.net/browse/HHH-7610 )
InformationsquelleAutor der Antwort user158037
Hinzufügen von dummy-Feld in der Klasse, die gekennzeichnet ist @Embeddable.
Sehen https://issues.jboss.org/browse/HIBERNATE-50 .
InformationsquelleAutor der Antwort Tomáš Záluský
War ich nicht allzu begeistert, mit einem der Vorschläge die bisher gemacht, so habe ich einen Aspekt behandeln würde, der das für mich.
Dies ist nicht vollständig getestet, und definitiv nicht gegen getestet Sammlungen von eingebetteten Objekten, so dass Käufer Vorsicht. Jedoch, scheint zu funktionieren für mich so weit.
Im Grunde genommen, fängt die getter der
@Embedded
Feld und sorgt dafür, dass das Feld gefüllt ist.InformationsquelleAutor der Antwort Eric B.
Können Sie eine nullsafe getter.
InformationsquelleAutor der Antwort felipebatista