jpa hibernate将类中的类的字段Map到同一个表

qvtsj1bj  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(364)

我有一个类“audit”,它将包含有关实体的以下详细信息:
创建时间
由哪个应用程序用户创建
更新时间
由哪个应用程序用户更新
在数据库中,这些字段与实体属性存储在同一个表中。例如,
用户表:

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;
}

在每个实体表上,审计字段的名称都相同。绘制这些领域的最佳方法是什么?

tkclm6bt

tkclm6bt1#

最好的办法就是 Audit 分类为 @Embeddable 实体,并将其作为 @Embedded 财产,这几乎是你目前正在做的。

相关问题