Bonjour,
J'ai le mapping suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 @Entity @Table(name = "authorities") public class Authorities implements Serializable { @EmbeddedId protected AuthoritiesPK authoritiesPK; @ManyToOne @JoinColumn(name = "username", insertable = false, updatable = false) private Users users;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @Embeddable public class AuthoritiesPK implements Serializable { @Column(name = "username") private String username; @Column(name = "authority") private String authority;J'ai l’erreur suivante quand je modifie un utilisateur ?
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 = "users") public class Users implements Serializable { @Id @Column(name = "username") private String username; @Column(name = "password") private String password; @Column(name = "enabled") private Boolean enabled; @Column(name = "email") private String email; @OneToMany(mappedBy = "users", cascade = CascadeType.ALL, fetch = FetchType.LAZY) private List<Authorities> authoritiesList;
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: entity.Authorities.users -> entity.Users
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 public Users modifyUser(Users pUser, List<String> listAuthorities) { EntityTransaction tx = getEM().getTransaction(); tx.begin(); if (pUser.getAuthoritiesList() != null) { List<Authorities> authoritieses = pUser.getAuthoritiesList(); for (Authorities a : authoritieses) { a.setUsers(null); getEM().remove(a); } pUser.getAuthoritiesList().clear(); for (String authoritie : listAuthorities) { addAuthorities(authoritie, pUser); } pUser = getEM().merge(pUser); } getEM().remove(pUser); tx.commit(); return pUser; }
Partager