Problem with update
adriju Feb 11, 2008 10:25 AMHi all,
I've got an entity (user) that has a many-to-one relationship with another entity (group), both generated with seam-gen. The problem is that when I try to change the group that a user belongs to, this happens, but in the database what has happened is that the name of that group has been changed, and that is not what I want.
I´m using Seam 2.0.0.SNAPSHOT, JBoss AS 4.2.2 and Red Hat Developer Studio 1.0.0.CR1.
Here you have my code:
the user:
@Entity
@Table(name = "USUARIOS")
public class Usuarios implements java.io.Serializable {
private long codUsuario;
private GruposUsuarios gruposUsuarios;
private String nombreUsuario;
private Short prioridadUsuario;
private String passwordUsuario;
private String filtroUsuario;
private String snmpUsuario;
private Set<TemispConfiguracion> temispConfiguracions = new HashSet<TemispConfiguracion>(
0);
private Set<FiltrosFichas> filtrosFichases = new HashSet<FiltrosFichas>(0);
private Set<Operacion> operacions = new HashSet<Operacion>(0);
private Set<Macro> macros = new HashSet<Macro>(0);
private Set<NuevaConfiguracion> nuevaConfiguracions = new HashSet<NuevaConfiguracion>(
0);
private Set<Grupo> grupos = new HashSet<Grupo>(0);
public Usuarios() {
}
public Usuarios(long codUsuario, GruposUsuarios gruposUsuarios) {
this.codUsuario = codUsuario;
this.gruposUsuarios = gruposUsuarios;
}
public Usuarios(long codUsuario, GruposUsuarios gruposUsuarios,
String nombreUsuario, Short prioridadUsuario,
String passwordUsuario, String filtroUsuario, String snmpUsuario,
Set<TemispConfiguracion> temispConfiguracions,
Set<FiltrosFichas> filtrosFichases, Set<Operacion> operacions,
Set<Macro> macros, Set<NuevaConfiguracion> nuevaConfiguracions,
Set<Grupo> grupos) {
this.codUsuario = codUsuario;
this.gruposUsuarios = gruposUsuarios;
this.nombreUsuario = nombreUsuario;
this.prioridadUsuario = prioridadUsuario;
this.passwordUsuario = passwordUsuario;
this.filtroUsuario = filtroUsuario;
this.snmpUsuario = snmpUsuario;
this.temispConfiguracions = temispConfiguracions;
this.filtrosFichases = filtrosFichases;
this.operacions = operacions;
this.macros = macros;
this.nuevaConfiguracions = nuevaConfiguracions;
this.grupos = grupos;
}
@Id
@Column(name = "COD_USUARIO", unique = true, nullable = false, precision = 10, scale = 0)
@NotNull
public long getCodUsuario() {
return this.codUsuario;
}
public void setCodUsuario(long codUsuario) {
this.codUsuario = codUsuario;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "COD_GRUPOS_USUARIOS", nullable = false)
@NotNull
public GruposUsuarios getGruposUsuarios() {
return this.gruposUsuarios;
}
public void setGruposUsuarios(GruposUsuarios gruposUsuarios) {
this.gruposUsuarios = gruposUsuarios;
}
@Column(name = "NOMBRE_USUARIO", length = 60)
@Length(max = 60)
public String getNombreUsuario() {
return this.nombreUsuario;
}
public void setNombreUsuario(String nombreUsuario) {
this.nombreUsuario = nombreUsuario;
}
@Column(name = "PRIORIDAD_USUARIO", precision = 3, scale = 0)
public Short getPrioridadUsuario() {
return this.prioridadUsuario;
}
public void setPrioridadUsuario(Short prioridadUsuario) {
this.prioridadUsuario = prioridadUsuario;
}
@Column(name = "PASSWORD_USUARIO", length = 128)
@Length(max = 128)
public String getPasswordUsuario() {
return this.passwordUsuario;
}
public void setPasswordUsuario(String passwordUsuario) {
this.passwordUsuario = passwordUsuario;
}
@Column(name = "FILTRO_USUARIO", length = 20)
@Length(max = 20)
public String getFiltroUsuario() {
return this.filtroUsuario;
}
public void setFiltroUsuario(String filtroUsuario) {
this.filtroUsuario = filtroUsuario;
}
@Column(name = "SNMP_USUARIO", length = 20)
@Length(max = 20)
public String getSnmpUsuario() {
return this.snmpUsuario;
}
public void setSnmpUsuario(String snmpUsuario) {
this.snmpUsuario = snmpUsuario;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "usuarios")
public Set<TemispConfiguracion> getTemispConfiguracions() {
return this.temispConfiguracions;
}
public void setTemispConfiguracions(
Set<TemispConfiguracion> temispConfiguracions) {
this.temispConfiguracions = temispConfiguracions;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "usuarios")
public Set<FiltrosFichas> getFiltrosFichases() {
return this.filtrosFichases;
}
public void setFiltrosFichases(Set<FiltrosFichas> filtrosFichases) {
this.filtrosFichases = filtrosFichases;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "usuarios")
public Set<Operacion> getOperacions() {
return this.operacions;
}
public void setOperacions(Set<Operacion> operacions) {
this.operacions = operacions;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "usuarios")
public Set<Macro> getMacros() {
return this.macros;
}
public void setMacros(Set<Macro> macros) {
this.macros = macros;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "usuarios")
public Set<NuevaConfiguracion> getNuevaConfiguracions() {
return this.nuevaConfiguracions;
}
public void setNuevaConfiguracions(
Set<NuevaConfiguracion> nuevaConfiguracions) {
this.nuevaConfiguracions = nuevaConfiguracions;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "usuarios")
public Set<Grupo> getGrupos() {
return this.grupos;
}
public void setGrupos(Set<Grupo> grupos) {
this.grupos = grupos;
}
}
The group:
@Entity
@Table(name = "GRUPOS_USUARIOS")
public class GruposUsuarios implements java.io.Serializable {
private long codGruposUsuarios;
private String nombreGruposUsuarios;
private Set<Usuarios> usuarioses = new HashSet<Usuarios>(0);
private Set<Filtros> filtroses = new HashSet<Filtros>(0);
private Set<Equipos> equiposes = new HashSet<Equipos>(0);
public GruposUsuarios() {
}
public GruposUsuarios(long codGruposUsuarios) {
this.codGruposUsuarios = codGruposUsuarios;
}
public GruposUsuarios(long codGruposUsuarios, String nombreGruposUsuarios,
Set<Usuarios> usuarioses, Set<Filtros> filtroses,
Set<Equipos> equiposes) {
this.codGruposUsuarios = codGruposUsuarios;
this.nombreGruposUsuarios = nombreGruposUsuarios;
this.usuarioses = usuarioses;
this.filtroses = filtroses;
this.equiposes = equiposes;
}
@Id
@Column(name = "COD_GRUPOS_USUARIOS", unique = true, nullable = false, precision = 10, scale = 0)
@NotNull
public long getCodGruposUsuarios() {
return this.codGruposUsuarios;
}
public void setCodGruposUsuarios(long codGruposUsuarios) {
this.codGruposUsuarios = codGruposUsuarios;
}
@Column(name = "NOMBRE_GRUPOS_USUARIOS", length = 60)
@Length(max = 60)
public String getNombreGruposUsuarios() {
return this.nombreGruposUsuarios;
}
public void setNombreGruposUsuarios(String nombreGruposUsuarios) {
this.nombreGruposUsuarios = nombreGruposUsuarios;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "gruposUsuarios")
public Set<Usuarios> getUsuarioses() {
return this.usuarioses;
}
public void setUsuarioses(Set<Usuarios> usuarioses) {
this.usuarioses = usuarioses;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "gruposUsuarios")
public Set<Filtros> getFiltroses() {
return this.filtroses;
}
public void setFiltroses(Set<Filtros> filtroses) {
this.filtroses = filtroses;
}
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "gruposUsuarios")
public Set<Equipos> getEquiposes() {
return this.equiposes;
}
public void setEquiposes(Set<Equipos> equiposes) {
this.equiposes = equiposes;
}
}
This is the code where I show the group name and where I do the update:
<s:decorate id="grupoUsuarioDecoration" template="layout/edit.xhtml">
<ui:define name="label">${messages.usersEditGroup}</ui:define>
<h:selectOneMenu id="grupoUsuario1" required="true" rendered="#{s:hasRole('Administrador') or (s:hasRole('Supervisor') and (usuariosHome.instance.prioridadUsuario > 20))}"
value="#{usuariosHome.instance.gruposUsuarios.nombreGruposUsuarios}">
<s:selectItems value="#{usuariosEditBean.listaGruposUsuarios}" var="t" label="#{t}" />
</h:selectOneMenu>
<h:inputText id="grupoUsuario2"
size="20"
maxlength="20"
rendered="#{s:hasRole('Configurador') or s:hasRole('Visualizador') or (s:hasRole('Supervisor') and (not (usuariosHome.instance.prioridadUsuario > 20)))}"
disabled="true"
value="#{usuariosHome.instance.gruposUsuarios.nombreGruposUsuarios}">
<a:support event="onblur" reRender="grupoUsuarioDecoration" bypassUpdates="true"/>
</h:inputText>
</s:decorate>
Does anyone know something about this?
Thanks in advance.