JPA спецификация ясно
Embeddables не может быть запрошена, сохранялось, сливались независимо от их родительского объекта. Они строго в частной собственности (зависимых) объектов
Вы должны использовать тщательно, потому что его продолжительность жизни ограничена продолжительностью жизни владельца экземпляра объекта. Так что, если вы будете упорствовать/слияния/удалить владеющую экземпляр сущности, все его embeddables экземпляры будут сохранены/объединенное/удалены
Предположим, что вы делаете что-то вроде
/**
* Let's suppose owning contains SIX embeddables instances
*/
Owning owning = manager.find(Owining.class, owningId);
Так что ваши изменения просто ваш владеющий объект на уровне представления и отправьте свои изменения. Вы получите свой ВЛАДЕЮЩИЙ объект с помощью
/**
* Usually your web framework Takes care of binding your submitted data
*/
Owning owning = new Owning();
owning.setProperty(request.getParameter("property"));
Затем вы можете объединить ваши представленные данные и вы Подумайте ваших embeddables экземпляров хранятся в базе данных еще. Хорошо, давайте посмотрим
Как показано выше Вы (или ваш веб-фреймворк) только что восстановили Владелец недвижимости, справа ??? Таким образом, ваш owning.getElementList() пуст. Поскольку owning.getElementList() пуст, JPA удалит все его экземпляры встраиваемых оболочек. Имейте это в виду.
Обычно Встраиваемый класс не имеет отношения к другому, кроме его Собственного объекта. И при использовании набора вложений, JPA всегда выберите перед сохранением/обновлением, потому что он должен сравнивать один за другим с помощью метода равных. Таким образом, вам понадобится согласованная равная реализация при использовании коллекции Set.
Here вы можете увидеть его коллега в Hibernate.
@Jan Здесь http://stackoverflow.com/questions/2440806/uml-class-relationships/2441251#2441251 Взгляните на ** состав **, и вы увидите, где @ElementCollection подходит лучше –