【问题标题】:Hibernate 4 and Postgres : How to create a sequence per table?Hibernate 4 和 Postgres:如何为每个表创建一个序列?
【发布时间】:2014-03-09 10:06:11
【问题描述】:

我使用 Hibernate 4 来映射到 Postgres 数据库。在进行映射之前,我创建了第一个 java 实体。然后,我使用 java 类从我的实体生成 sql 脚本。这是我的实体:

用户实体

@Entity
@Table(name="myusers")
public class User {


    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column(name="fistname")
    private String firstName;

    @Column(name="lastName")
    private String lastName;
....
}

项目实体

@Entity
@Table(name="projects")
public class Project {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column(name="title")
    private String title;

    @Column(name="description")
    private String description;
..
}

我注意到@GeneratedValue(strategy = GenerationType.AUTO) 为表 myusers 和项目生成相同的序列。如果我在 myusers 表上创建第一条记录,则 id 将具有“1”作为值,然后当我在表项目中创建第一条记录时,该记录的 id = 2。他们使用相同的顺序。 我想知道我如何不能修改我的实体来指定 Hibernate 来为每个表创建一个序列。

【问题讨论】:

标签: sql hibernate postgresql


【解决方案1】:

如果您最近使用的是 Hibernate,请尝试:

@GeneratedValue(strategy = GenerationType.IDENTITY)

如果它仍然使用每个表的序列,请使用:

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="mytable_id_seq")
@SequenceGenerator(name="mytable_id_seq", sequenceName="mytable_id_seq", allocationSize=1)

hibernate could not get next sequence value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-23
    • 2022-12-12
    • 1970-01-01
    • 2021-09-30
    • 2020-10-22
    • 1970-01-01
    • 2012-04-26
    • 2011-11-07
    相关资源
    最近更新 更多