我有2个对象A和B,它们具有相同的属性,但表格不同。
@Entity
@Table(name = "A")
public class A {
@Id
private Integer id;
...
}
和
@Entity
@Table(name = "B")
public class B {
@Id
private Integer id;
...
}
它会导致重复的代码,因为每个属性都相同。 做这种问题的最佳做法是什么?
答案 0 :(得分:1)
我为此创建了一个@MappedSupperclass
,然后从中扩展。它看起来像这样
@MappedSuperclass
public class Common {
@Id
private Integer id;
}
@Entity
@Table(name = "A")
public class A extends Common {
...
}
@Entity
@Table(name = "B")
public class B extends Common {
...
}
这不会创建实体层次结构,但只会移动超类中的公共实体属性。通常用于id
,version
,createdBy
等。