您应该使用@GenericGenerator
而不是@SequenceGenerator
来获得更精细的控制来生成序列.
通过SequenceStyleGenerator.CONFIG_SEQUENCE_PER_ENTITY_SUFFIX
找到了一种老套的方法来生成子类的序列,甚至不需要修改它们.
试试这个:
import jakarta.persistence.*;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.id.enhanced.SequenceStyleGenerator;
@MappedSuperclass
public class BaseIdentifier {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "custom_gen")
@GenericGenerator(name = "custom_gen", strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = {
@Parameter(name = SequenceStyleGenerator.CONFIG_SEQUENCE_PER_ENTITY_SUFFIX, value = "_seq"),
@Parameter(name = SequenceStyleGenerator.INITIAL_PARAM, value = "1"),
@Parameter(name = SequenceStyleGenerator.INCREMENT_PARAM, value = "1")})
@Column(updatable = false, nullable = false)
private Long id;
}
Order_TABLE:
import jakarta.persistence.Entity;
@Entity
public class Order_Table extends BaseIdentifier {
}
购买:
import jakarta.persistence.Entity;
@Entity
public class Purchase extends BaseIdentifier {
}
Spring Boot日志(log):
I've tested with Oracle DB, it's working.个
Order_TABLE:
-购买:
Order_TABLE_SEQ:
采购序号: