有没有一种方法可以在Hibernate中使用共享可嵌入对象?

时间:2020-08-16 19:45:32

标签: java hibernate jpa

我遇到一种情况,我想将可重复的类字段标记为@embeddable,但是问题是-JPA是否允许多次重用一个类,使其可嵌入其他不同的类中?

例如我的可嵌入类如下所示:

@Embeddable
@Data
public class Audit{
private String name;
private Audit auditor;
private LocalDateTime creationDate;
}

是否可以将审核嵌入到多个不同的类中,例如:

    @Entity
    @Table(name = "BANK")
    public class Bank{
   
    @Id
    private Long id;
    
    @Column(name = "BANK_NAME")
    private String bankName;
    
    @Embedded
    private Audit audit;
    }

AND

 @Entity
    @Table(name = "CORPORATION")
    public class Corporation{
   
    @Id
    private Long id;
    
    @Column(name = "CORPORATION_NAME")
    private String corporationName;
    
    @Embedded
    private Audit audit;
    }

1 个答案:

答案 0 :(得分:0)

从历史上讲,休眠称为这些组件。 JPA称它们为embeddables。无论哪种方式,概念都是相同的:价值的构成。

大多数情况下,可嵌入类型用于分组多个基本类型映射并在多个实体中重复使用

Java代码示例:

@Data
@Entity(name = "Book")
public class Book {

    @Id
    @GeneratedValue
    private Long id;

    private String title;

    private String author;

    private Publisher publisher;

}

@Data
@Embeddable
public static class Publisher {

    @Column(name = "publisher_name")
    private String name;
    @Column(name = "publisher_country")
    private String country;

}

这是SQL,用于显示表的外观:

create table Book (
    id bigint not null,
    author varchar(255),
    publisher_country varchar(255),
    publisher_name varchar(255),
    title varchar(255),
    primary key (id)
)

更多详细信息可以在documentation中找到:)