CharlEm80
Messages postés66Date d'inscriptionvendredi 1 septembre 2006StatutMembreDernière intervention 1 août 2012
-
13 mai 2009 à 09:57
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 2011
-
15 mai 2009 à 16:26
Bonjour,
J'ai un problème avec Hibernate. En fait je ne fais que charger un fichier formaté dans un table Oracle.
Dans ma table Oracle j'ai une séquence que j'appelle comme ceci dans mon Hibernate :
Cette séquence me sert à avoir un numéro d'ID dans ma table.
Le problème c'est qu'a des moments aléatoires (parfois après 100 lignes, parfois après 1200 lignes) le programme s'arrête car je me retrouve avec deux fois le même numéro d'identification (erreur Oracle car l'id est ma pk)
J'ai l'impression qu'Oracle ou Hibernate font que tout d'un coup Oracle essaye de réutiliser des anciens numéros qui avaient été effacés.
Par exemple si ma séquence commence à 100000 et que je fais un Hibernate.Saveobject() je me retrouve avec un id qui est égal à 62091 alors que le max(id) avant début du traitement était de 57337.
Je ne comprend donc pas pourquoi mon id n'a pas été de 100001.
Si c'est Hibernate qui fait ça pourquoi n'a t il pas prit 57338 d'où sort ce 62091 c'est très bizard tout ça non?
Le pire c'est que pendant la lecture du fichier à un moment tout à fait aléatoire (mais toujours le même code et le même fichier input) je vais me retrouver avec des 57338, 57338, ... jusqu'au moment où il va se cracher contre le 62091 qu'il a déjà écrit au début de ce traitement.
Bref je deviens dingue avec ce machin quelqu'un a t il déjà vu ça ?
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 20117 15 mai 2009 à 16:26
Salut,
la définition de l'utilisation d'une séquence pour un champ ressemble plutôt à : @SequenceGenerator(name "SEQ_ID", sequenceName "ma_seq")@GeneratedValue(strategy GenerationType.SEQUENCE, generator "SEQ_ID")
J'ai jamais eu de pb avec les séquences d'oracle ou avec hibernate pour leur gestion.
Ta séquence s'incrémente bien ? Tu as loggé les appels SQL d'hibernate pour voir si il fait l'appel de la séquence ?