MappedSuper类将继承用于字段和代码的重用。

此外,我们通过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之间有什么区别,以及它们在什么情况下使用是合适的。

最佳答案

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

@Embeddable用于映射复合值类型。 @Embeddable类在我们的实体中用作字段类型之一。当您要模仿“有A”关系时,可以使用此功能。

您在问题中陈述的情况可能不适合任何情况。因为MappedSuperClass和Embeddable都不能是一个实体。(您在部门类中拥有departmentid,我认为这应该是主键)。
对于您的情况,更好的方法是使用@OneToOne实体关联,因为cse部门将具有唯一的ID名称和desc。你不想在一所大学里有2个学系。

10-08 19:28