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