目前我按以下方式定义表格:
该示例是用 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/