JPA, сущность карты Person, которая содержит класс типа Name - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть сущность Person, которая состоит из имени атрибута

@Entity
public class Person {
      // ...
      //@Transient 
       private Name name;
      // ...
}

Я не хочу хранить «имя» в дополнительной таблице ... Я отмечаю имя как временное, поэтому оно не сохраняется в базовая база данных.

Мне нужно сопоставить атрибут «name» со столбцами «first_name» и «last_name» в базе данных.

Например, я могу создать такого человека, как new Person(new Name("John","Doe"));

Как я могу добиться отображения, что базовая таблица содержит два дополнительных столбца first_name и last_name, а содержимое - это строки, которые я получаю из атрибута name?

Таблица, основанная на сущности человека, должна выглядеть следующим образом:

id | first_name | last_name 1 | John | Доу 2 | Джейн | Доу

1 Ответ

1 голос
/ 01 апреля 2020

Вы можете использовать встраиваемые файлы:

@Embeddable
public class Name {

    private String firstName;
    private String lastName;

    // getters and setters
}

, а затем использовать их как.

@Entity
public class Person {
      // ...
      private Name name;
      // ...
}

Подробнее о встраиваемых объектах в документации по Hibernate: https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#embeddables

...