I have been fighting with a error that I just can't see why happens - so now I ask you smart people.
I have a entitybean with a one to one connection to another entity bean.
When I try to change the username like this:
Subscriber sub = (Subscriber) em.createQuery("...").getSingleResult(); sub.setUserName("newusername"); //notice that setUserName actually is getRoles().setUserName("newusername"); sub.setPassword("newpassword"); sub.getRoles().setRoles("newRole"); //autocommit
@Entity public class Subscriber implements Serializable{ ... @OneToOne(cascade={CascadeType.ALL}, optional=false) @JoinColumn(name="username", unique=true) public SubscriberRoles getRoles() { return roles; } public void setRoles(SubscriberRoles roles) { this.roles = roles; } public void setUserName(String username) { getRoles().setUserName(username); } @Transient public String getUserName(){ return getRoles().getUserName(); } } @Entity public class SubscriberRoles implements Serializable{ private String userName; private String roles; public SubscriberRoles(){} public SubscriberRoles(String username, String roles){ userName = username; this.roles = roles; } public String getRoles() { return roles; } public void setRoles(String roles) { this.roles = roles; } @Id public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } }