Hibernate 4和Postgres:如何为每个表创建一个序列?

3
我将使用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表和projects表产生相同的序列。如果我在myusers表中创建第一条记录,其id将具有"1"的值,然后当我在projects表中创建第一条记录时,该记录的id将为2。它们都使用相同的序列。 我想知道如何不修改我的实体来指示Hibernate为每个表创建一个序列。


可能是Hibernate:@GeneratedValue如何工作的概述的重复。 - Peter Bratton
1个回答

8
如果您使用的是较新版本的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无法获取下一个序列值


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接