簡體   English   中英

為什么此序列生成器無法在Spring Boot中創建數據庫表?

[英]Why does this sequence generator not create a database table in Spring Boot?

@Entity
@Table(name = "addition_type")
public class AdditionType {
    @Id
    @SequenceGenerator(name = "addition_type_id_seq", sequenceName = "addition_type_id_seq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "addition_type_id_seq")
    @Column(name = "id")
    private int id;

    @Column(name = "code")
    private String code;

    @Column(name = "name")
    private String name;

    @Column(name = "sinhala_name")
    private String sinhalaName;

    @Column(name = "report_name")
    private String reportName;

    @Column(name = "status")
    private int status;

    @ManyToOne
    @JoinColumn(referencedColumnName = "id")
    private CompanyInfo companyInfo;

    // there are not show getter and setter
}

當我在Spring中使用此類時,生成了兩個數據庫表:實體的AdditionType表和與序列生成器相對應的addition_type_id_seq表。 AdditionType表具有以下列:id,name,code ...,而另一個表具有idnext value

當我在Spring Boot中使用此類時,它沒有創建兩個這樣的表。 僅創建AdditionType表。 為什么SequenceGenerator在Spring Boot中不起作用?

由於MYSQL方言不支持序列:

我們可以利用表生成器策略來定義序列:

    @Id
    @TableGenerator(name = "addition_type_id_seq", allocationSize = 1, table = "ADDITION_TYPE_SEQUENCES",
                pkColumnName = "SEQ_NAME",
                        valueColumnName = "SEQ_NUMBER",
                pkColumnValue = "SEQUENCE")
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "addition_type_id_seq")
    @Column(name = "id")
    private int id;

這將確保創建兩個表:ADDITION_TYPE_SEQUENCES和ADDITION_TYPE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM