在我们的旧建筑中,我们使用的id是这样的:
static
但是在Hibernate之外更改值时,我们遇到了一些问题。
因此,我们决定使用WinForms
中的/**
* 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;
}
。
我们更改了数据库,并为每个表添加了序列,并将其设置为主键。
我们有很多实体,并且所有实体都使用bigserial
。在postgres
中是ID的定义。
但是现在我们不能将Hibernate设置为正确使用序列。
我们尝试了以下策略(针对AbstractDbBase
注释):
AbstractDbBase
:在hibnerate上创建记录时抛出异常(无法访问序列)。@GeneratedValue()
:引发验证异常(未找到序列)。GenerationType.IDENTITY
:引发验证异常(未找到序列)。 我的问题是:我们如何告诉Hibernate使用正确的顺序? (不写每个实体的序列名)
答案 0 :(得分:0)
我发现了这个:hibernate could not get next sequence value
所以我必须使用GenerationType.IDENTITY
。现在,我必须解决“序列无许可”问题。
我已经完成了以下问题:ERROR: permission denied for sequence cities_id_seq using Postgres
现在可以使用。