Bonjour,

Dans mon application, j'ai un module d'ajout/modif/supress dans une table.
La clé primaire est générée par une séquence qui est prise en charge par un trigger oracle(10g).

Au départ, lorsque j'appelais save(monObj), l'objet était bien sauvegardé mais je récupérais toujours 0 comme identifiant.
Avec saveOrUpdate(monObj), même lorsqu'il s'agissait d'un update, il ajoutait un nouvel enregistrement.

Je me suis donc rendu compte que c'était l'identifiant qui n'était pas trouvé.

J'ai tenté de le spécifié comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
@Id
@GeneratedValue(strategy= GenerationType.AUTO,generator="mygen")
@SequenceGenerator(name="mygen",sequenceName="SCHEMA.SEQUENCE")
@Column(name="TAB_ID",unique=true..)
public long getId(){...}
Admettons que ma séquence avant l'insert est à 60, mon save(monObj) me retourne 61 (il intérroge ma séquence) alors que mon trigger à lui aussi intérrogé ma séquence et à affecter la valeur à l'identifiant. Conclusion, save me retourne 61 alors que l'identifiant est 62.
saveOrUpdate(monObj) ajoute toujours un élément alors qu'il s'agit d'un update..

J'ai alors tenté ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
@id
@GeneratedValue(generator="trig-gen")
@GenericGenerator(name="trig-gen", strategy="select", parameters = @Parameter(name="key",value="TAB_ID"))
public long getId(){...}
J'ai alors : unknown property: TAB_ID
Je pense que je me rapproche de la solution, qu'il faut définir la value de "key" à un autre endroit.. mais je n'y arrive pas...

Pourriez-vous m'aider?
Merci d'avance