2011-05-19 10 views
1

Je développe une application Web pour la planification de la distribution logistique. J'utilise Java, JSF 2.0 et Oracle-XE comme base de données. Dans Oracle-XE, j'ai implémenté des séquences et des déclencheurs pour incrémenter automatiquement l'ID de certains attributs. Mon problème est, si j'exécute l'application par exemple pour ajouter un nouveau client, alors j'ai besoin de récupérer l'ID incrémenté de la base de données et l'enregistrer ensuite dans mon objet client. Existe-t-il un autre moyen d'obtenir directement l'ID incrémenté à partir de la base de données? Je n'aime pas la solution avec SELECT l'ID de la base de données.Cohérence des données avec le modèle de mappeur de données

Merci

Répondre

2

Si vous émettez SQL directement sur la base de données via JDBC (si vous utilisez une couche de mapping objet-relationnel, l'API prend en charge probablement quelque chose de similaire), vous pouvez utiliser la clause RETURNING lors d'une INSERT. Quelque chose comme

INSERT INTO table_name(column1, column2, ... , columnN) 
    VALUES(:1, :2, ... , :N) 
    RETURNING key_column INTO :new_key 

qui renverra la valeur que le déclencheur peuplé de la colonne KEY_COLUMN dans la variable de liaison :new_key.

+0

Est-il possible d'affecter la touche RETURNED dans une variable, par exemple un entier? – djihad

Questions connexes