gpt4 book ai didi

java - JPA Hibernate 将类内类的字段映射到同一个表

转载 作者:行者123 更新时间:2023-11-29 10:16:03 26 4
gpt4 key购买 nike

我有一个“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;
}

在每个实体表上,审计字段将被命名为相同的。映射这些字段的最佳方法是什么?

最佳答案

最好的方法是将 Audit 类设置为 @Embeddable 实体,并在所有实体中将其用作 @Embedded 属性,这几乎就是你目前正在做的事情。

关于java - JPA Hibernate 将类内类的字段映射到同一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50102752/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com