Question @OneToMany Cascade.ALL
Bonjour,
J'ai deux classes Word et Translation. Ces entités sont reliées par une relation OneToMany (Un mot peut contenir plusieurs traductions, et une traduction appartient à un mot).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
@Entity
@Table(name = "word")
public class Word implements Serializable {
@OneToMany(mappedBy = "word", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Translation> translations = new ArrayList<Translation>();
}
@Entity
@Table(name = "translation")
public class Translation implements Serializable {
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_word",nullable = false)
private Word word;
} |
Ce que je voudrais, c'est que mes traductions soient insérées lorsque je sauvegarde mon mot (d'où le cascade = CascadeType.ALL).
Pour l'instant je fais comme cela :
Code:
1 2 3 4 5 6 7 8
|
Translation translation = new Translation();
Word word = new Word();
word.getTranslations().add(translation);
translation.setWord(word);
em.persist(word) |
Cela fonctionne bien mais j'aimerais me passer de l'instruction translation.setWord(word);.
En gros je voudrais qu'il insert ma traduction et qu'il la lie au mot, uniquement en ajoutant la traduction au mot word.getTranslations().add(translation);. Seulement pour l'instant si j'écris uniquement cette instruction, il ne lie pas la traduction à mon mot !
cordialement