Incrémentation avec une clef composée
Bonjour,
Je bute actuellement sur un problème de gestion de bases de données en JEE.
Voici la table en question :
(id int, version int, varchar data).
En somme, il s'agit de stocker les différentes versions de documents par id d'utilisateur et par version ; le champ version devant être rempli automatiquement.
La clef primaire est donc le duo (id,version), id étant une clef étrangère (id de l'auteur)
create table document (
version int not null auto_increment,
id int,
data varchar(255)
Primary Key (version, id),
Foreign Key (id) references auteur(id)
);
id | version | data
--------------------------
2 | 1 | ...
2 | 2 | ...
3 | 1 | ...
2 | 3 | ...
3 | 2 | ...
Voici un code simplifié de mon entité "Document"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| @Entity
@Table(name = "Document")
public class Document implements Serializable {
...
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@Column(name = "version")
@Basic(optional = false)
private int version;
@Basic(optional = false)
@Id
@Column(name = "id")
private int id;
...
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id",insertable=false, updatable=false)
private Auteur auteur;
... |
Le soucis est qu'actuellement, j'ai un incrementeur bête et méchant, qui donne le résultat suivant quand je m'amuse à ajouter des documents :
id | version | data
--------------------------
2 | 1 | ...
2 | 2 | ...
3 | 3 | ...
2 | 4 | ...
3 | 5 | ...
En somme, est-il possible d'affecter un incrémenteur différent pour chaque valeur de id? (sans passer par des requêtes sales du type "select max(version) where id=bidule"...
En vous remerciant d'avance,
Jaime
PS : Configuration netbeans&glassfish last releases, framework jsf