Kurz gesagt, @ElementCollection wird verwendet, wenn die Existenz der untergeordneten Entität ohne die übergeordnete Entität IOW bedeutungslos ist. Wenn eine übergeordnete Entität entfernt wird, sind Ihre Kinder auch ...
dellasavia
1
Ich glaube, es ist NICHT die untergeordnete Entität, sondern der Werttyp / das Wertobjekt, der eingebettet ist und dessen Existenz ohne die Hauptentität, in der sie enthalten ist, weniger bedeutet.
CuriousMind
stimme @CuriousMind zu, in JPA hat eine 'Entität' einen eigenen Lebenszyklus.
Mhrsalehi
Antworten:
124
Ich glaube, es @ElementCollectionist hauptsächlich für die Zuordnung von Nicht-Entitäten (einbettbar oder einfach) gedacht, während @OneToManyes für die Zuordnung von Entitäten verwendet wird. Welche Sie verwenden, hängt davon ab, was Sie erreichen möchten.
Danke Peder für die Antwort! Sie haben dort einen gültigen Punkt, da @OneToMany nur Entitäten in Beziehung setzen kann.
n_g
157
ElementCollectionist eine Standard-JPA-Annotation, die jetzt der proprietären Hibernate-Annotation vorgezogen wird CollectionOfElements.
Dies bedeutet, dass die Sammlung keine Sammlung von Entitäten ist, sondern eine Sammlung einfacher Typen (Strings usw.) oder eine Sammlung einbettbarer Elemente (mit Anmerkungen versehene Klasse @Embeddable).
Dies bedeutet auch, dass die Elemente vollständig im Besitz der enthaltenen Entitäten sind: Sie werden geändert, wenn die Entität geändert wird, gelöscht, wenn die Entität gelöscht wird usw. Sie können keinen eigenen Lebenszyklus haben.
@ElementCollectionMit dieser Option können Sie Code vereinfachen, wenn Sie eine Eins-zu-Viele-Beziehung mit einem einfachen oder eingebetteten Typ implementieren möchten. Wenn Sie beispielsweise in JPA 1.0 eine Eins-zu-Viele-Beziehung zu einer Liste von Strings haben möchten, müssen Sie eine einfache Entität POJO ( StringWrapper) erstellen, die nur den Primärschlüssel und die Stringfraglichen Elemente enthält :
ElementCollection kann die Zuordnungen oder Tabellen für ihre Auflistung überschreiben, sodass mehrere Entitäten auf dieselbe Embeddable-Klasse verweisen können, die abhängigen Objekte jedoch jeweils in einer separaten Tabelle gespeichert werden.
Antworten:
Ich glaube, es
@ElementCollection
ist hauptsächlich für die Zuordnung von Nicht-Entitäten (einbettbar oder einfach) gedacht, während@OneToMany
es für die Zuordnung von Entitäten verwendet wird. Welche Sie verwenden, hängt davon ab, was Sie erreichen möchten.quelle
ElementCollection
ist eine Standard-JPA-Annotation, die jetzt der proprietären Hibernate-Annotation vorgezogen wirdCollectionOfElements
.Dies bedeutet, dass die Sammlung keine Sammlung von Entitäten ist, sondern eine Sammlung einfacher Typen (Strings usw.) oder eine Sammlung einbettbarer Elemente (mit Anmerkungen versehene Klasse
@Embeddable
).Dies bedeutet auch, dass die Elemente vollständig im Besitz der enthaltenen Entitäten sind: Sie werden geändert, wenn die Entität geändert wird, gelöscht, wenn die Entität gelöscht wird usw. Sie können keinen eigenen Lebenszyklus haben.
quelle
@ElementCollection
Mit dieser Option können Sie Code vereinfachen, wenn Sie eine Eins-zu-Viele-Beziehung mit einem einfachen oder eingebetteten Typ implementieren möchten. Wenn Sie beispielsweise in JPA 1.0 eine Eins-zu-Viele-Beziehung zu einer Liste vonString
s haben möchten, müssen Sie eine einfache Entität POJO (StringWrapper
) erstellen, die nur den Primärschlüssel und dieString
fraglichen Elemente enthält :Mit JPA 2.0 können Sie einfach schreiben:
Einfacher, nicht wahr? Beachten Sie, dass Sie die Tabellen- und Spaltennamen weiterhin mit steuern können
@CollectionTable
Anmerkungen .Siehe auch:
quelle
Grundlegend oder eingebettet : @ElementCollection-
Entitäten : @OneToMany oder @ManyToMany
@ElementCollection:
@OneToMany / @ManyToMany:
quelle
@ElementCollection
markiert eine Sammlung. Dies bedeutet nicht unbedingt, dass diese Sammlung auf einen 1-n-Join verweist.quelle
ElementCollection kann die Zuordnungen oder Tabellen für ihre Auflistung überschreiben, sodass mehrere Entitäten auf dieselbe Embeddable-Klasse verweisen können, die abhängigen Objekte jedoch jeweils in einer separaten Tabelle gespeichert werden.
quelle