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