MappedSuperclass 和 Embeddable 之间有什么区别以及我们应该如何使用

sha*_*ari 8 java hibernate

MappedSuperclass 使用继承来重用字段和代码。

此外,我们通过 Hibernate 提供的可嵌入功能利用一些组合

@Embeddable
public class Department {

private long deptId;
private String name;
private String description;
}

@Entity
@Table(name="CSE_DEPT", schema="test")
public class CSEDepartment{

@Embedded
private Department dept;
}
Run Code Online (Sandbox Code Playgroud)

@MappedSuperclass 和 @Embeddable 之间有什么区别以及它们使用的合适情况。

小智 5

当我们想要在不同实体之间共享某些状态时,@MappedSuperClass 非常有用,这样它们将具有相同的字段,并且您可以在不同实体中重用这些字段。通常它被创建为抽象类,并且您不能创建它自己的实例。当您想要模仿“Is A”关系时,可以使用此选项。它不能用作关联的目标。

@Embeddable 用于映射复合值类型。@Embeddable 类用作我们实体中的字段类型之一。当你想模仿“Has A”关系时,可以使用它。

您在问题中陈述的情况可能不适合任何人。因为 MappedSuperClass 和 Embeddable 都不能是一个实体..(您在部门类中有departmentid,我假设它应该是主键)。对于您的情况,最好使用 @OneToOne 实体关联,因为 cse 部门将具有唯一的 id 名称和描述。你不想在一所大学里有两个部门。