java - Spring 启动: Set hibernate sequence globally

标签 java spring hibernate jpa kotlin

目前我按以下方式定义表格:

该示例是用 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)

有 Bean 还是其他东西?因为我喜欢对所有表使用相同序列的想法。

最佳答案

您可以拥有一个带有 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;
    }

}

每个实体都会扩展它。

关于java - Spring 启动: Set hibernate sequence globally,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61028673/

相关文章:

java - 最长的重复字节序列

java - spring 单元测试上下文配置

java - Spring Boot 2.1.0 发布出现 404 not found 错误

json - 如何解决由Many TO Many hibernate双向映射引起的json序列化器中的循环引用?

java - Wildfly 如何使资源适配器全局化

java - 在同一个包中找不到类

java - "su <otheruser>"失败,返回 "standard in must be atty"

java - 部署描述符和 Java 资源消失了

MySql case语句性能

java - hibernate enver findRevisions hashCode StackOverflowError