【发布时间】:2019-01-01 02:58:41
【问题描述】:
在我们旧的architektur中,我们使用了这样的id:
/**
* Model for each database-object
*/
public abstract class AbstractDbBase {
@Getter
@Setter
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
@Column(nullable = false, unique = true, updatable = false)
private Long id;
}
但是我们在更改 Hibernate 之外的值时遇到了一些问题。
所以我们决定从postgres使用bigserial。
我们更改了数据库并为每个表添加了一个序列并将其设置为主键。
我们有很多实体,它们都使用AbstractDbBase。而在AbstractDbBase中是id的定义。
但现在我们无法设置 Hibernate 以正确使用序列。
我们尝试了以下策略(针对@GeneratedValue()-annotation):
-
GenerationType.IDENTITY:通过休眠创建记录时抛出异常(无法访问序列)。 -
GenerationType.SEQUENCE:引发验证异常(未找到序列)。 -
GenerationType.AUTO:引发验证异常(未找到序列)。
我的问题是:我们如何告诉 Hibernate 使用正确的序列? (没有为每个实体写明确的序列名称)
【问题讨论】: