Bonjour, je suis sur un projet et j'ai deux entités: User et friend. Je veux ajouter un User a partir de friend mais le programme lance une exception: detached entity passed to persist. D'aprés ce que j'ai compris , il faut attacher l'entité User à Friend. J'ai cherché partout sur le net et mon problème reste sans solution.
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
48
49
50
51
52
53
54
55
56
57
58
59
60 @Entity @Table(name="users") public class User { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; private String lastName; private String firstName; private String username; private String email; private String Password; @OneToMany(mappedBy="user") private List<Friend> friends; public List<Friend> getFriends() { return friends; } public void setFriends(List<Friend> friends) { this.friends = friends; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return Password; } public void setPassword(String password) { Password = password; }Le code pour attacher l'objet mais ça ne marche pas
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 @Entity @Table(name="friends") public class Friend { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; @ManyToOne(cascade={CascadeType.PERSIST,CascadeType.REMOVE,CascadeType.MERGE}) private User user; public int getId() { return id; } public void setId(int id) { this.id = id; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }
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 public static String newRelation(Friend f){ try{ EntityManagerFactory emf = Persistence.createEntityManagerFactory("supmessaging"); EntityManager database = emf.createEntityManager(); EntityTransaction trans = database.getTransaction(); trans.begin(); User attachedUser = database.merge(f.getUser()); f.setUser(attachedUser); database.persist(f); trans.commit(); database.close(); emf.close(); return "ok"; }catch(Exception e){ System.err.println("Erreur : "+e.getMessage()); return e.getMessage(); } }
Partager