Bonjour,
Je suis en train de réaliser une application me permettant de générer des devis mais je me heurte à des erreur sur mes relations :
- 1-n : une commande contient plusieurs lignes et une ligne est associée à une unique commande
- n-1 : une ligne est associé à un produit mais un produit peut être associé à plusieurs lignes (si matériau ou couleur sont différent)
Code java : 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 @Entity @Table (name="commande") public class Commande{ @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column (name="id") private int id; @OneToMany(mappedBy = "commande", cascade=CascadeType.ALL) private Set<Ligne> myLines=new HashSet<Ligne>(10); } @Entity @Table (name="produit") public class Produit { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) @Column (name="Id") //@ManyToOne //@JoinColumn(name="id") private int id; } @Entity @Table (name="ligne") public class Ligne { @Id @ManyToOne @JoinColumn(name="commande") private Commande commande; @Id @OneToOne(fetch = FetchType.LAZY,cascade=CascadeType.ALL) @JoinColumn(name="produit", unique=true, nullable=false, updatable=false) private Produit produit; @Column (name="quantity") private short quantity; @Id @Column (name="material") private String material; @Id @Column (name="color") private int color; }
Je sauvegarde mes données de la manière suivante :
Je souhaite que l'enregistrement se face dans l'ordre suivant :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Commande c=new Commande(); //ajout de chaque ligne avec les produits Session s=HibernateUtils.getSessionFactory().openSession(); s.save(c); s.close();
- enregistrement des commandes et produits
- enregistrement des lignes
J'ai l'erreur suivante à l'exécution :
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: Produit
Partager