Java @@Id和序列的继承(策略=InheritanceType.TABLE\u PER\u类)问题

Java @@Id和序列的继承(策略=InheritanceType.TABLE\u PER\u类)问题,java,hibernate,jpa,hibernate-mapping,Java,Hibernate,Jpa,Hibernate Mapping,我在继承(strategy=InheritanceType.TABLE\u PER\u CLASS)和自动生成的表ID方面遇到了麻烦 以下是我的模型: @Getter @Entity @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) @DiscriminatorColumn(name = "type") @SuperBuilder @NoArgsConstructor public abstract class MenuEntity

我在继承(strategy=InheritanceType.TABLE\u PER\u CLASS)和自动生成的表ID方面遇到了麻烦

以下是我的模型:

@Getter
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@DiscriminatorColumn(name = "type")
@SuperBuilder
@NoArgsConstructor
public abstract class MenuEntity {

    @Id
    @EqualsAndHashCode.Include
    @GeneratedValue(strategy = GenerationType.TABLE)
    private Long id;

    //...
}
在开发过程中,我定义了一个
data.sql
脚本,它将测试数据插入我的
H2
inmemory数据库。只有当我在语句中指定
ID
值时,这些脚本才能正常工作,在其他情况下,“ID”列不允许使用
NULL
。因此,我必须在insert语句中设置
ID
(该问题不会出现在没有继承策略和
@GeneratedValue(strategy=GenerationType.IDENTITY)
的其他实体中)

一个新的问题出现了:当应用程序尝试在执行时插入
简化功能时,会引发异常:
org.h2.jdbc.JdbcSQLException:唯一索引或主键冲突:“primary key on PUBLIC.SIMPLE_MENU(ID))
因为
序列
仍然是值
1
,即使它已经有一些测试数据

到目前为止我有一些问题

1.我的模型对吗? 我必须在我的
抽象类中使用
@Entity
而不是
@MappedSuperclass
,因为它有
@manytone
注释

ID
属性对于所有子表都是通用的,但我希望每个表都有自己的
ID
序列

2.对于
SQL
INSERT
语句,我应该如何处理自动生成的
ID
? 我需要在我的开发应用程序中的测试数据

@Getter
@Entity
@Table(name = "tasting_menu")
@SuperBuilder
@NoArgsConstructor
public class TastingMenuEntity extends MenuEntity {

    //...
}
@Getter
@Setter
@Entity
@Table(name = "simple_menu")
@SuperBuilder
@NoArgsConstructor
public class SimpleMenuEntity extends MenuEntity {

    //...
}