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.