JPA Hibernate 将类中的类中的字段映射到同一个表
Posted
技术标签:
【中文标题】JPA Hibernate 将类中的类中的字段映射到同一个表【英文标题】:JPA Hibernate map fields from class within class to same table 【发布时间】:2018-04-30 14:37:00 【问题描述】:我有一个“审计”类,它将包含有关实体的以下详细信息:
创建时间 由哪个应用程序用户创建 时间更新 由哪个应用程序用户更新在数据库中,这些字段与实体属性存储在同一个表中。例如,
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】:最好的方法是将Audit
类作为@Embeddable
实体并在您的所有实体中将其用作@Embedded
属性,这几乎是您目前正在做的事情。
【讨论】:
以上是关于JPA Hibernate 将类中的类中的字段映射到同一个表的主要内容,如果未能解决你的问题,请参考以下文章