Hibernate/JPA et PostgreSQL - Clé Primaire?

Je suis en train de mettre en œuvre certaines entités de base de l'utilisation d'Hibernate/JPA. Initialement, le code a été déployé sur MySQL et fonctionnait bien. Maintenant, je suis de portage à l'utilisation de PostgreSQL. Dans MySQL, ma classe d'entité définit sa clé primaire comme auto-incrémentation de la valeur de type long avec la syntaxe suivante:

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

Cependant, j'ai constaté que j'ai des erreurs avec PostgreSQL lorsque j'essaie de l'insérer de nombreux enregistrements à la fois. De quoi ai-je besoin d'annoter ma clé primaire pour obtenir la même auto-incrémentation de comportement dans PostgreSQL comme je l'ai avec MySQL? Merci pour toute aide que vous pouvez fournir!

GenerationType.AUTO ne devrait pas être un problème avec une base de données. Vous pouvez poster l'exception et / ou votre code d'insertion? Il est intéressant de noter que sur MySQL, GenerationType.AUTO convertit le type d'incrément alors que sur PostgreSQL, il utilise la séquence par défaut. Voir la doc ici docs.jboss.org/hibernate/core/3.5/reference/en/html/... pour une description
Je vais essayer une fois de plus, et puis après, l'exception que je suis. La façon dont j'ai mes classes d'entité de l'installation est d'avoir une classe de base abstraite avec l'id défini et l' @MappedSuperclass annotation sur elle, et puis tirer le reste de mes entités à partir de là. Tu crois que ça va créer un problème dans PostgreSQL?
Êtes-vous d'insertion avec JPA persist() et merge() ou SQL directe? GenerationType.AUTO signifie "le fournisseur de persistance devez choisir une stratégie appropriée" (JPA 2.0 Version Finale, Section 11.1.17). Il n'implique pas nécessairement une séquence de relation. Seulement GenerationType.SEQUENCE les forces de l'APC de fournisseur à utiliser une séquence. La question est trop vague pour être sûr, mais peut-être Hibernate décidé de générer id avec une table sous Postgres et peut-être vous exécutez SQL attend à une inexistant par défaut de la séquence de valeur pour la colonne id. S'il vous plaît montrer la Postgres relations (psql est \d).
Je suis de la génération de test de 100 lignes à l'aide d'une boucle for. Je crée chaque entité et de définir chaque valeur à l'exception de l'identifiant (clé primaire), puis effectuer une JPA persist() pour le stocker. Je vais augmenter le niveau de journalisation et d'obtenir plus d'informations à publier. Merci!

OriginalL'auteur Shadowman | 2010-05-12