En pocas palabras, @ElementCollection se usa cuando la existencia de la entidad secundaria no tiene sentido sin la entidad principal, IOW, cada vez que se elimina una entidad principal, sus hijos también serán ...
dellasavia
1
Creo que NO es la Entidad secundaria, es el Tipo de Valor / Objeto de Valor el que está incrustado y cuya existencia significa menos sin la Entidad principal en la que está contenido.
CuriousMind
de acuerdo con @CuriousMind, en JPA una 'Entidad' tiene su propio ciclo de vida.
mhrsalehi
Respuestas:
124
Creo que @ElementCollectiones principalmente para mapear no entidades (integrables o básicas) mientras @OneToManyse usa para mapear entidades. Entonces, cuál usar depende de lo que quieras lograr.
Gracias Peder por la respuesta! Tiene un punto válido allí ya que @OneToMany solo puede relacionar entidades.
n_g
157
ElementCollectiones una anotación JPA estándar, que ahora se prefiere sobre la anotación patentada de Hibernate CollectionOfElements.
Significa que la colección no es una colección de entidades, sino una colección de tipos simples (Strings, etc.) o una colección de elementos incrustables (clase anotada con @Embeddable).
También significa que los elementos son propiedad exclusiva de las entidades que los contienen: se modifican cuando se modifica la entidad, se eliminan cuando se elimina la entidad, etc. No pueden tener su propio ciclo de vida.
@ElementCollectionle permite simplificar el código cuando desea implementar una relación de uno a muchos con un tipo simple o incrustado. Por ejemplo, en JPA 1.0 cuando deseaba tener una relación uno a muchos con una lista de Strings, tenía que crear una entidad simple POJO ( StringWrapper) que contenía solo la clave primaria y la Stringpregunta:
Entonces, ¿cuál es exactamente el propósito de @ElementCollection?
n_g
0
ElementCollection puede anular las asignaciones o la tabla para su colección, por lo que puede hacer que varias entidades hagan referencia a la misma clase Embeddable, pero que cada una almacene sus objetos dependientes en una tabla separada.
Respuestas:
Creo que
@ElementCollection
es principalmente para mapear no entidades (integrables o básicas) mientras@OneToMany
se usa para mapear entidades. Entonces, cuál usar depende de lo que quieras lograr.fuente
ElementCollection
es una anotación JPA estándar, que ahora se prefiere sobre la anotación patentada de HibernateCollectionOfElements
.Significa que la colección no es una colección de entidades, sino una colección de tipos simples (Strings, etc.) o una colección de elementos incrustables (clase anotada con
@Embeddable
).También significa que los elementos son propiedad exclusiva de las entidades que los contienen: se modifican cuando se modifica la entidad, se eliminan cuando se elimina la entidad, etc. No pueden tener su propio ciclo de vida.
fuente
@ElementCollection
le permite simplificar el código cuando desea implementar una relación de uno a muchos con un tipo simple o incrustado. Por ejemplo, en JPA 1.0 cuando deseaba tener una relación uno a muchos con una lista deString
s, tenía que crear una entidad simple POJO (StringWrapper
) que contenía solo la clave primaria y laString
pregunta:Con JPA 2.0 puedes simplemente escribir:
Más simple, ¿no? Tenga en cuenta que aún puede controlar los nombres de tabla y columna mediante
@CollectionTable
anotaciones.Ver también:
fuente
Básico o integrado : @ElementCollection
Entidades : @OneToMany o @ManyToMany
@ElementCollection:
@OneToMany / @ManyToMany:
fuente
@ElementCollection
marca una colección Esto no significa necesariamente que esta colección haga referencia a una unión 1-n.fuente
ElementCollection puede anular las asignaciones o la tabla para su colección, por lo que puede hacer que varias entidades hagan referencia a la misma clase Embeddable, pero que cada una almacene sus objetos dependientes en una tabla separada.
fuente