Erreur Postgres dans l'insertion par lots: la relation "hibernate_sequence" n'existe pas position 17
Je m'exécute hibernate jpa lot de mise à jour et sa me donne erreur suivant
2015-04-21 15:53:51,907 WARN [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (Thread-283 (HornetQ-client-global-threads-462057890)) SQL Error: 0, SQLState: 42P01
2015-04-21 15:53:51,908 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (Thread-283 (HornetQ-client-global-threads-462057890)) ERROR: relation "my_seq_gen" does not exist
Je suis en utilisant la base de données postgres et mon ID est généré automatiquement
@Id
@SequenceGenerator(name="seq-gen",sequenceName="MY_SEQ_GEN"initialValue=205, allocationSize=12)
@GeneratedValue(strategy= GenerationType.SEQUENCE, generator="seq-gen")
@Column(name="\"ID\"",unique=true,nullable=false)
private int id;
C'est mon lot insérer un extrait de code
getEm().getTransaction().begin();
System.out.println("transaction started--------------");
try {
for (Receipt ReceiptEntity : arrReceiptEntity) {
getEm().persist(ReceiptEntity);
}
getEm().getTransaction().commit();
System.out.println("commited");
} catch (Exception exception) {
System.out.println("error----------------------------------------------------------------------");
if(getEm().getTransaction().isActive())
getEm().getTransaction().rollback();
LOG.error(exception);
} finally {
getEm().flush();
getEm().clear();
getEm().close();
}
J'ai ajouté la propriété suivante dans persistence.xml
<property name="hibernate.id.new_generator_mappings" value="true"/>
S'il vous plaît suggérer ce que je fais de mal.
source d'informationauteur kirti
Vous devez vous connecter pour publier un commentaire.
Essayer d'annoter vos
id
avec@Id
et@GeneratedValue(strategy=GenerationType.IDENTITY)
. Il a travaillé pour moi avec PostgreSql.Mise à JOUR: Il ne fonctionne que si votre colonne id a été déclaré comme
SERIAL
ouBIGSERIAL
types.Si vous ne voulez pas changer votre définition de l'entité, alors vous avez besoin pour créer une séquence dans votre postgreSQL schéma avec le nom
hibernate_sequence
.Mise à JOUR:
Il vous manque la deuxième séquence generatef, que vous avez défini pour votre entité, il suffit de l'ajouter comme précédent:
Mal utile tutoriel:
http://www.concretepage.com/hibernate/generatedvalue-strategy-generationtype-sequence-hibernate
J'espère que vous aurez la réponse, mais si vous êtes toujours à la recherche de la réponse, cela pourrait être utile.
J'ai eu le même problème et résolu à annoter méthode de lecture de la pièce d'identité avec
@SequenceGenerator
et@GeneratedValue
.Pouvez-vous essayer suivantes :
Grâce
J'étais avec le même problème.J'ai résolu de les ranger incrément automatique sur la colonne id de la table sur postgres, il fonctionne comme ça.
Dans mon cas, l'ajout d'property name="hibernate.hbm2ddl.auto" value="mise à jour", a résolu le problème. Vous devez ajouter la propriété nommée dans la persistence.xml
Selon un post, hibernate ne pouvait pas obtenir la prochaine valeur de la séquence
définissez votre @GeneratedId colonne avec la stratégie GenerationType.L'IDENTITÉ au lieu de GenerationType.SÉQUENCE. Donc, vous auriez