[JAVA] Que faire lorsque la "relation" hibernate_sequence "n'existe pas" dans la colonne ID de PostgreSQL + JPA

Un mémo à prendre lorsqu'une erreur se produit lors de l'utilisation d'une séquence dans la colonne ID de PostgreSQL + JPA.

phénomène

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é.

Faire face

Il y a deux manières.

Comment spécifier explicitement le nom de la séquence

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

Comment utiliser GenerationType.IDENTITY

C'est plus simple.

@Id
@SequenceGenerator(name = "employee_employee_id_seq")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer employeeId;

Recommended Posts

Que faire lorsque la "relation" hibernate_sequence "n'existe pas" dans la colonne ID de PostgreSQL + JPA
Que faire lorsque les modifications du servlet ne sont pas reflétées
[Grails] Une erreur s'est produite lors de l'exécution Que faire lorsque la CLI Grails ne démarre pas
Traitement lorsqu'un ID qui n'existe pas dans la base de données est entré dans l'URL
Que faire lorsque la méthode n'est pas trouvée dans f: ajax
Que faire lorsque «Impossible de trouver» dans l’une des sources apparaît dans l’environnement de développement avec Docker × Rails × RSpec
[Tutoriel Rails Chapitre 2] Que faire lorsque vous faites une erreur dans le nom de la colonne
[Rails] Que faire lorsque les rails ne répondent pas ou ne s'arrêtent pas
Que faire lorsque le préfixe c n'est pas lié dans JSP
Comment contraindre l'action de la destination de transition lorsqu'elle n'est pas connectée
Que faire si l'opération non autorisée s'affiche lors de l'exécution d'une commande dans le terminal
Que faire lors du débogage "Source non trouvée"
Que faire si IllegalStateException se produit dans PlayFramework
[JPA] Comparez table1 et table2 pour obtenir et mettre à jour des données qui n'existent pas dans la table2.
Que faire si les modifications ne sont pas reflétées dans le fichier manifeste JAR
Que faire lorsque la valeur devient nulle dans le second getSubmittedValue () dans JSF Validator
Que faire quand est invalide car il ne commence pas par un "-"
[Rails] Que faire lorsque l'image Refile n'est pas affichée lors de l'écriture du traitement au moment de l'erreur de routage
Que faire si la mise à jour ne prend pas effet après le déploiement de Rails AWS
[React.useRef] Que faire lorsque le dernier état ne peut pas être référencé dans l'écouteur d'événements
Que faire lorsque le certificat SSL a expiré
Que faire lorsque les balises JSF ne deviennent pas HTML
Que faire si vous ne pouvez pas obtenir le texte d'un élément dans Selenium
Que faire lorsque «Échec du chargement de la bibliothèque partagée JNI» s'affiche dans Eclipse
Que faire si l'annotation JSON Hint ne fonctionne pas avec Lombok et JSONIC
Que faire si le point d'arrêt est grisé et ne s'arrête pas pendant le débogage
Dans la boîte de dialogue d'avertissement lors du démarrage de l'applet, la vérification de "Ne pas afficher de la prochaine fois" ne fonctionne pas
Que faire si vous sélectionnez un JRE dans Eclipse et obtenez "Le JRE sélectionné ne prend pas en charge le niveau de conformité actuel 11"
Que faire lorsque vous ne pouvez pas formater l'objet donné en tant que date dans JSF convertDateTime
Que faire si vous avez installé Ruby avec rbenv mais que la version ne change pas
Bluemix Infrastructure VPN ne se connecte pas car il ne prend pas en charge NPAPI! Que faire quand [Mac]
Que vérifier lorsque rails db: la migration ne réussit pas
Comment obtenir le journal lorsque install4j ne démarre pas
[Rails] Que faire lorsque l'erreur Aucune base de données sélectionnée et Base de données inconnue apparaît dans db: migrate
[Débutant en programmation] Que faire lorsque les rails deviennent une erreur dans l'environnement de développement local
Que faire lorsque vous souhaitez connaître la position source où la méthode est définie dans binding.pry
[Rails 5] [Turbolinks] Que faire lorsque JS ne fonctionne pas en raison d'une transition de page ou d'un retour du navigateur
Que faire si l'application n'est pas créée avec la dernière version de Rails installée lorsque les rails sont neufs
Que faire lorsque javax.el.ELException: Pas une expression de méthode valide: s'affiche lorsque l'écran JSF est affiché
[Ubuntu 20.04] Que faire si le moniteur externe n'est pas reconnu
Que faire si une exception UnsupportedCharsetException se produit dans un JRE léger
[Rails] Que faire si les données ne sont pas enregistrées dans la base de données
Que faire si la page Rails n'est pas affichée dans le didacticiel Rails 1.3.2
Que faire lorsque Cloud 9 est plein dans le didacticiel Rails
Comment obtenir l'identifiant de la clé PRIMAY incrémentée automatiquement dans MyBatis
Que faire si vous oubliez votre mot de passe root sur CentOS7
Si vous n'appelez pas shutdownNow lorsque le transfert est terminé avec le SDK Java d'AWS S3, le thread continuera à rester.
[RSpec] Lorsque vous souhaitez utiliser la variable d'instance du contrôleur dans le test [attribuer n'est pas recommandé]
Que faire lorsqu'une exception javax.batch.operations.JobStartException se produit
[IOS] Que faire lorsque l'image est remplie d'une seule couleur
Que faire si l'image d'arrière-plan n'est pas appliquée après le déploiement
Que faire lorsque l'hôte bloqué: "nom d'hôte" apparaît dans Ruby on Rails