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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager