bonjour
j'ai 3 entities.
-operation
-number
-keyword

operation peut contenir plusieurs keyword et 1 number

je veux une table d'assos entre les 3 entities, (operation_id,number_id,keyword_id)

j'ai donc mappé mon entities operation de la sorte :


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
21
22
23
24
 
@Entity
public class Operation
..
 
 
@OneToMany(fetch = FetchType.LAZY,
            cascade = {
                    CascadeType.ALL
            })
    @JoinTable(name = "operation_number_keyword", joinColumns = {@JoinColumn(name = "operation_id", nullable = false)},
            inverseJoinColumns = {@JoinColumn(name = "keyword_id", nullable = false)})
    @Column(unique=false)
    protected List<Keyword> keyword;
 
    @OneToOne(fetch = FetchType.LAZY,
            cascade = {
                    CascadeType.PERSIST,
                    CascadeType.MERGE
            })
    @JoinTable(name = "operation_number_keyword", joinColumns = {
            @JoinColumn(name = "operation_id", nullable = false)},
            inverseJoinColumns = {@JoinColumn(name = "number_id", nullable = false)})
    protected Number number;
voyez vous un souci dans ce mapping ?

j'ai donc au final 3 tables, operation ,number et keyword je dirais de facon classique
et une table d assos avec les 3 clés ( operation_id,number_id,keyword_id)



Lorsque je persiste (.save) mon operation (avec mon operation contenant bien les keyword et le number), j'ai cette erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Caused by: java.sql.SQLException: Field 'keyword_id' doesn't have a default value

une idée ?

merci