Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hibernate 4 and Postgres : How to create a sequence per table?

I use Hibernate 4 to use mapping to a Postgres database. Before doing mapping i create first java entities. And then, i use a java class to generate sql script from my entities. Here is my entities :

User entity

@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;
....
}

Project entity

@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;
..
}

I've noticed that @GeneratedValue(strategy = GenerationType.AUTO) produces the same sequence for table myusers and projects. If i create the first record on myusers table the id will have "1" as value and then when i create the first record in table projects, this record will have id =2. They use both the same sequence. I want to know how i cannot modify my entities to specify to Hibernate to create a sequence for each table.

like image 676
Pracede Avatar asked Dec 05 '25 16:12

Pracede


1 Answers

If you're on a recent Hibernate, try:

@GeneratedValue(strategy = GenerationType.IDENTITY)

If it still uses a sequence per table use:

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

See hibernate could not get next sequence value

like image 134
Craig Ringer Avatar answered Dec 07 '25 05:12

Craig Ringer



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!