Bom pessoal, o problema é o seguinte:
Em uma alteração de um setor (setor de uma empresa por exemplo), já existente no banco de dados, existe um momento em que o usuário
pode alterar o nome deste setor e o chefe do setor, o chefe deste setor pode ser escolhido dentro de uma selectbox que retorna todos os
funcionários pertencentes àquele setor. Ele altera sim o nome do setor e também o chefe do setor…o problema é quando eu quero deixar o
setor sem chefe.
Neste selectbox, que possui o emptyValue, quando o emptyValue é selecionado, solicito a atualização, e o erro que me é retornado é o seguinte:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.jm.beans.Usuario
Bean:
@Entity
@Table(name="setor")
public class Setor implements Serializable{
private static final long serialVersionUID = -4147033917357122227L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="id_setor")
private Integer idSetor;
@Column(name="st_nome")
private String nome;
@Column(name="st_superior")
private Integer superior;
@OneToOne(fetch=FetchType.EAGER)
@JoinColumn(name="st_chefe")
private Usuario chefe;
@OneToMany(mappedBy="idUsuario",fetch=FetchType.LAZY)
private List<Usuario> listaUsuario;
@OneToMany(mappedBy="idOcorrencia",fetch=FetchType.LAZY)
private List<Ocorrencia> listaOcor;
//Getters e Setters
}
Minha JSP:
<%@taglib prefix="s" uri="/struts-tags"%>
<%@taglib prefix="sj" uri="/struts-jquery-tags"%>
<s:form id="formAlterarSetor" theme="simple" action="setor!alterarSetor">
<table>
<tr>
<td>Setor:</td>
<td colspan="2" align="left">
<s:hidden id="idSetor" name="setor.idSetor"/>
<s:hidden id="superior" name="setor.superior"/>
<s:textfield id="nome" name="setor.nome" label="Setor"/>
</td>
</tr>
<tr>
<td>Chefe:</td>
<td colspan="2" align="left">
<s:if test="%{listaUsuarios.size<1}">
Não há usuários neste setor.
</s:if>
<s:else>
<s:select emptyOption="true" name="setor.chefe.idUsuario" value="%{setor.chefe.idUsuario}" list="listaUsuarios" listValue="nome" listKey="idUsuario"/>
</s:else>
</td>
</tr>
<tr>
<td><sj:submit value="Alterar" formIds="formAlterarSetor" targets="divTabSetores" button="true" buttonIcon="ui-icon-gear"/></td>
<td></td>
<td>
<s:url id="urlAddSub" action="setor!adicionarSubSetor?setor.idSetor=%{setor.idSetor}"/>
<sj:a openDialog="popUpDialog" href="%{urlAddSub}" button="true" buttonIcon="ui-icon-gear">Adicionar Sub-setor</sj:a>
</td>
</tr>
</table>
</s:form>