JPA Hibernate отображают поля из класса в классе в одну таблицу - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть класс «Аудит», который будет содержать следующую информацию о сущности:

  • Время создания
  • Создано пользователем какого приложения
  • Время обновлено
  • Обновлено пользователем приложения

В базе данных эти поля хранятся в той же таблице, что и атрибуты сущности. Например,

Таблица USER:

CREATE TABLE USERS (
    id                  BIGINT          NOT NULL    AUTO_INCREMENT,
    display_name        VARCHAR(30)     NOT NULL,

    active              BOOLEAN         NOT NULL    DEFAULT FALSE,

    created_time        TIMESTAMP       NOT NULL    DEFAULT CURRENT_TIMESTAMP,
    created_user        BIGINT          NOT NULL    DEFAULT 0,
    updated_time        TIMESTAMP       NOT NULL    DEFAULT 0,
    updated_user        BIGINT          NOT NULL    DEFAULT 0,

    PRIMARY KEY (id)
);

Класс ПОЛЬЗОВАТЕЛЯ:

@Entity(name="USER")
@Table(name="USERS")
public class User implements Audited {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="ID", nullable=false, updatable=false)
    private long id;

    @Column(name="DISPLAY_NAME", nullable=false)
    @NotNull
    @Size(min=5, max=30)
    private String displayName;

    @Column(name="ACTIVE", nullable=false)
    @NotNull
    private boolean active;

    private Audit audit;
}

АУДИТ Класс:

public class Audit {

    private Date createdTime;

    private User createdByUser;

    private Date updatedTime;

    private User updatedByUser;
}

В каждой таблице сущностей поля аудита будут называться одинаково. Каков наилучший подход при отображении этих полей?

1 Ответ

0 голосов
/ 30 апреля 2018

Лучшим способом было бы сделать класс Audit как @Embeddable сущность и использовать его во всех ваших сущностях как свойство @Embedded, что почти то, что вы делаете в настоящее время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...