簡體   English   中英

Spring 引導:全局設置 hibernate 序列

[英]Spring Boot: Set hibernate sequence globally

目前我通過以下方式定義表格:

示例在 Kotlin 中,但如果需要,您可以在 Java 中回答。

@Entity
data class Task(@Id @GeneratedValue(strategy = GenerationType.SEQUENCE)
                var id: Int = 0,

                @ManyToOne(optional = false) @OnDelete(action = OnDeleteAction.CASCADE)
                var exercise: Exercise = Exercise(),

                @Column(nullable = false)
                var name: String = "")

@Entity
data class Exercise(@Id @GeneratedValue(strategy = GenerationType.SEQUENCE)
                    var id: Int = 0,

                    @Column(nullable = false)
                    var count: Int = 0)

使用此示例,所有表都使用相同的序列: hibernate_sequence

如果我想配置它,例如設置自定義allocationSize ,那么我必須在每個表中定義它,對嗎?

@SequenceGenerator(name = "task_seq", sequenceName = "task_seq", allocationSize = 100)

有豆子還是別的什么? 因為我喜歡對所有表使用相同序列的想法。

您可以擁有一個抽象基 class ,其 ID 如下:

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

@MappedSuperclass
public abstract class BaseEntity {

    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

}

每個實體都會擴展它。

這可行,但在使用 hibernate Envers 的情況下,它將創建兩個序列。

暫無
暫無

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

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