1 pièce(s) jointe(s)
object references an unsaved transient instance - save the transient
Bonjour,
J'ai le mapping suivant :
Pièce jointe 140696
Code:
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:
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; |
Code:
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; |
J'ai l’erreur suivante quand je modifie un utilisateur ?
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: entity.Authorities.users -> entity.Users
Code:
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;
} |