假设我有一个抽象父类和两个实现该父类的子类。如果我希望每个子类独立处理其标识符,而不是让父类管理它们,我该如何实现?我的意思是,我希望子类 1 的实例具有从 1 开始的 ID,而子类 2 也具有从 1 开始的 ID,因此子类 1 的 ID 可以为 1,子类 2 的 ID 可以为 1 ID 也为 1。
这里是我编写的一些代码,但无法使其工作:
@Entity
@Data
@NoArgsConstructor
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Parent {
}
@Entity
public class FirstChild extends Cuenta {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Integer id;
}
@Entity
public class SecondChild extends Cuenta {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Integer id;
您的Java实体应该与您在数据库中的表结构相匹配。因此,建议在实体类 FirstChild 和 SecondChild 中包含包括 id 在内的所有属性。
现在,也许您希望代码使用父类的一个实例来调用同一组 setter。为此,您应该继承一个包含常见 getter/setter 列表的接口,并在两个类上实现相同的接口。这样您就可以编写接口代码而不是实现代码。