Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA Hibernate将类中的类中的字段映射到同一个表_Java_Mysql_Hibernate_Jpa_Orm - Fatal编程技术网

Java JPA Hibernate将类中的类中的字段映射到同一个表

Java JPA Hibernate将类中的类中的字段映射到同一个表,java,mysql,hibernate,jpa,orm,Java,Mysql,Hibernate,Jpa,Orm,我有一个“审计”类,该类将包含有关实体的以下详细信息: 时间创造 由哪个应用程序用户创建 时间更新 由哪个应用程序用户更新 在数据库中,这些字段与实体属性存储在同一个表中。比如说, 用户表: CREATE TABLE USERS ( id BIGINT NOT NULL AUTO_INCREMENT, display_name VARCHAR(30) NOT NULL, active

我有一个“审计”类,该类将包含有关实体的以下详细信息:

  • 时间创造
  • 由哪个应用程序用户创建
  • 时间更新
  • 由哪个应用程序用户更新
在数据库中,这些字段与实体属性存储在同一个表中。比如说,

用户表:

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
类作为
@Embedded
实体,并将其作为
@Embedded
属性在您的所有实体中使用,这几乎就是您当前正在做的事情