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

时间:2017-11-16 20:51:51

标签: java hibernate

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

此外,我们通过Hibernate提供的Embeddable功能来利用一些组合

@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;
}

@MappedSuperclass和@Embeddable之间的区别是什么,以及他们使用的适当情况。

1 个答案:

答案 0 :(得分:1)

当我们想要在不同实体之间共享某些状态时,@ MappedSuperClass很好,因此它们将具有相同的字段,您可以重用不同实体中的字段。通常,它是作为抽象类创建的,您无法创建自己的实例。当你想模仿'Is A'关系时,你可以使用它。它不能用作关联的目标。

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

您在问题中说明的情况,可能不适合任何情况。因为MappedSuperClass和Embeddable都不能成为一个实体..(你已经在我认为应该是主键的部门类中离开了)。 对于您的情况,更好的是使用@OneToOne实体关联,因为cse部门将具有uniqu id名称和desc。你不想在一所大学里有2个csedepartment。

相关问题