Un mémo à prendre lorsqu'une erreur se produit lors de l'utilisation d'une séquence dans la colonne ID de PostgreSQL + JPA.
Avec PostgreSQL (10.0)
create table employee (
employee_id serial not null,
employee_name text,
constraint employee_PKC primary key (employee_id)
);
Quand il y a une table comme
@Entity
public class Employee {
@Id
@SequenceGenerator(name = "employee_employee_id_seq")
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Integer employeeId;
private String employeeName;
// Getter/Setter
}
Si vous ajoutez l'annotation, lors de l'enregistrement de l'enregistrement
org.postgresql.util.PSQLException: ERROR: relation "hibernate_sequence" does not exist
J'ai eu l'erreur. Apparemment, le nom de la séquence par défaut est référencé.
Il y a deux manières.
L'inconvénient est que vous devez écrire le nom de la séquence plusieurs fois.
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "employee_employee_id_seq")
@SequenceGenerator(name = "employee_employee_id_seq", sequenceName = "employee_employee_id_seq")
private Integer employeeId
C'est plus simple.
@Id
@SequenceGenerator(name = "employee_employee_id_seq")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer employeeId;