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;
	}
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;
	}
}
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
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();
 
 
}
	}