Dans un projet spring boot 2 avec jpa, hibernate et postgres je tente de sauvegarder un objet qui a utilise un IdClass
Dans Sampling j'ai donc un composite key.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 @Embeddable public class EmbedddedSamplesKey implements Serializable { private Integer id; private int year; ... } @Entity @IdClass(EmbedddedSamplesKey.class) @Inheritance(strategy = InheritanceType.SINGLE_TABLE) public class Samplings { @Id @GeneratedValue private Integer id; @Id private int year; @OneToMany(mappedBy = "sampling", cascade = CascadeType.PERSIST, orphanRemoval = true) private List<Samples> samples = new ArrayList<>(); public void addSample(Samples sample) { samples.add(sample); sample.setSampling(this); } public void removeSample(Samples sample) { samples.remove(sample); sample.setSampling(null); } ... } @Entity public class Samples extends BaseEntity { @Id @SequenceGenerator(name = "samples_id_seq", sequenceName = "samples_id_seq", allocationSize = 1) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "samples_id_seq") private Integer id; @ManyToOne private Samplings sampling; ... }
Dans cet objet j'ai une liste de Sample.
Dans la samples, il y a les champs
sampling_id
sampling_year
mais lors de la sauvegarde rien n'est mis dans ses champs
Je croyais que le orm allait remplir ses valeur
Le orm a généré dans la table samples
J'ai tenté de mettre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ALTER TABLE samples ADD CONSTRAINT fkq5if151jgtlcy7yfp55ffvf47 FOREIGN KEY (sampling_id, sampling_year) REFERENCES samplings (id, year) ON UPDATE NO ACTION ON DELETE NO ACTION;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 @ManyToOne @JoinColumns({ @JoinColumn(name = "sampling_id", referencedColumnName = "id"), @JoinColumn(name = "sampling_year", referencedColumnName = "year")}) private Samplings sampling;
même résultat
Partager