Bonjour,
Je tente de faire une persistance en cascade de cet entité :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Entity
@Table(name = "operations")
public class Operation implements Serializable {
 
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;
	private Integer seq;
	private Character sens;
	private Double montant;
 
	@OneToOne(cascade = CascadeType.PERSIST)
	private Compte compte;
        // getters, setters constructor.
En faisant la persistant que celui-ci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
@Entity
@Table(name = "transactions")
public class Transaction implements Serializable {
 
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;
	private String type;
	private String description;
 
	@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
	private Set<Operation> operations;
// getters, setters constructor.
Je tiens à ajouter que dans L'entité Operation, on a un OneToOne unidirectionnel avec une entité nommé compte qui lui même, est unidirectionnelle OneToOne avec TypeCompte.
Les voici donc.
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
@Entity
@Table(name="comptes")
 
public class Compte implements Serializable {
 
 
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;
	private String libelle;
	private Double solde;
 
	@OneToOne(cascade = CascadeType.PERSIST)
	private TypeCompte typeCompte;
 
	private static final long serialVersionUID = 1L;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
@Entity
@Table(name="type_compte")
 
public class TypeCompte implements Serializable {
 
 
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;
	private String libelle;
	private String numero;
	private static final long serialVersionUID = 1L;
Ma question est, lorsque je persiste une entité transaction, ça m'indique que l'entité opération qui est détaché tente de persiter.

Alors que j'ai fait ceci.
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
public void doVal(){
		TypeCompte tc = new TypeCompte();
		tc.setLibelle(compte.getValue());
		tc.setNumero("512");
 
		Compte c = new Compte();
		c.setTypeCompte(tc);
		c.setLibelle(compte.getValue());
		c.setSolde(150d);
 
 
		Operation o = new Operation(), o1 = new Operation();
		o.setCompte(c);
		o.setId(0l);
		o.setSeq(Integer.parseInt(seq.getValue()));
		o.setSens(sens.getValue().charAt(0));
		o.setMontant(Double.valueOf(montant.getValue()));
 
		Compte c1 = new Compte();
		c1.setTypeCompte(tc);
		c1.setLibelle("SGBS");
		c1.setSolde(150d);
 
		o1.setCompte(c1);
		o1.setId(1l);
		o1.setSeq(Integer.parseInt(seq.getValue()));
		o1.setSens(sens.getValue().charAt(0));
		o1.setMontant(Double.valueOf(montant.getValue()));
 
		Set<Operation> set_o = new HashSet<Operation>();
		set_o.add(o1);
		set_o.add(o);
 
 
		Transaction t = new Transaction();
		t.setDescription("test transactions");
		t.setType(transaction.getValue());
		t.setOperations(set_o);
		tf.create(t);
	}
Je sais plus quoi écrire...