especificación JPA está claro
incrustables no se puede consultar, persistió, se fusionó con independencia de su objeto padre. Son propiedad privada estrictamente (dependiente) objetos
Debe utilizar cuidadosamente porque su vida útil está limitada por el tiempo de vida de la instancia de la entidad propietaria. Así que si persisten/fusión/eliminar la instancia entidad propietaria, todos sus incrustables casos se conservará/fusionada/removidos
suponga que hacer algo como
/**
* Let's suppose owning contains SIX embeddables instances
*/
Owning owning = manager.find(Owining.class, owningId);
Así que su modificar simplemente su entidad propietaria en la capa de vista y envíe sus cambios. Recuperar su entidad propietaria utilizando
/**
* Usually your web framework Takes care of binding your submitted data
*/
Owning owning = new Owning();
owning.setProperty(request.getParameter("property"));
A continuación, puede combinar los datos presentados y A creer las instancias incrustables se almacenan en la base de datos todavía. Bueno, veamos
Como se muestra arriba que acaba de recuperar (o su marco web) ¿Posee propiedades, verdad ??? Por lo tanto, su owning.getElementList() está vacío. Como owning.getElementList() está vacío, JPA eliminará todas sus instancias incrustables. Mantén esto en mente.
Por lo general, una clase incrustable no tiene ninguna relación con su entidad propietaria. Y al utilizar un conjunto de elementos incrustables, JPA siempre seleccione antes de guardar/actualizar porque necesita comparar uno por uno utilizando su método igual. Por lo tanto, necesita un consistente en la implementación cuando usa una colección de conjuntos.
Here puede ver su homólogo en Hibernate.
@Jan Aquí http://stackoverflow.com/questions/2440806/uml-class-relationships/2441251#2441251 Eche un vistazo a ** composition ** y verá donde @ElementCollection se ajusta mejor –