Возможны сохраняющиеся объекты JPA с полями сущностей?

#java #jpa #persistence #entity

#java #jpa #сохранение #сущность

Вопрос:

Если у меня есть объект, такой как следующий:

 @Entity
public class Customer {
    private Address address;
}
  

И адрес также является сущностью:

 @Entity
public class Address {...}
  

Сохраняется ли у клиента, в свою очередь, его адрес, содержащийся в нем? Или это вообще невозможно? Идея заключалась в том, чтобы иметь основную сущность, состоящую из ее полей, некоторые из которых сами являются сущностями, которые будут храниться в отдельных таблицах. Некоторые из полей Customer уникальны тем, что мне также нужна таблица Customer для этих данных. Если я просто не пропустил это, я не смог найти этот ответ. Это было то, о чем мне было просто любопытно, и в настоящее время я не нахожусь на компьютере, где я могу это попробовать, поэтому я хотел сначала спросить.

Заранее спасибо.

Комментарии:

1. Конечно, это возможно. Вы только что заново изобрели ассоциацию OneToOne (или ManyToOne). Это, конечно, описано в любом руководстве / книге о JPA.

Ответ №1:

Это возможно и основы JPA. Но вы должны определить ассоциации между объектами в ваших классах сущностей.

Я рекомендую прочитать хороший учебник по этой теме, например, учебник Java EE6.

Ответ №2:

У вас есть 2 варианта в зависимости от вашей модели домена:

  • удаление @Entity из адреса и добавление к нему @Embeddable

  • сопоставление адреса в Person с помощью: @OneToOne(каскад = {CascadeType.СОХРАНЯЕТСЯ})