Erro org.hibernate.TransientObjectException: The instance was not associated with this session
ibmoreno Jul 17, 2009 4:12 PMwhat problem?
entity classe
@Entity @Table(name = "cargo") public class Cargo implements java.io.Serializable { private static final long serialVersionUID = 2632056225124288939L; private int codigoCargo; private String nomeCargo; public Cargo() { } public Cargo(int codigoCargo, String nomeCargo) { this.codigoCargo = codigoCargo; this.nomeCargo = nomeCargo; } @Id @Column(name = "codigo_cargo", unique = true, nullable = false) @NotNull public int getCodigoCargo() { return this.codigoCargo; } public void setCodigoCargo(int codigoCargo) { this.codigoCargo = codigoCargo; } @Column(name = "nome_cargo", nullable = false, length = 75) @NotNull @Length(max = 75) public String getNomeCargo() { return this.nomeCargo; } public void setNomeCargo(String nomeCargo) { this.nomeCargo = nomeCargo; } @Override public boolean equals(Object obj) { if (obj == null) return false; else if (!(obj instanceof Cargo)) return false; else if (((Cargo) obj).getCodigoCargo() == this.getCodigoCargo()) return true; else return false; } @Override public int hashCode() { int result = 17; result = 37 * result + (int) this.getCodigoCargo(); return result; } }
ManagedBean
@Name("usuarioAction") @Scope(ScopeType.PAGE) public class UsuarioAction extends SropAbstractActionCommand { private static final long serialVersionUID = -2580358142278471330L; @In private Session seamDatabase; private List<Cargo> cargos = null; private Cargo cargo = new Cargo(); @Override public void doAdicionar() { this.getController().setHabilitaNovoCadastro(false); this.getController().setCurrentState(ControllerState.ADICIONAR_STATE); } @Override public void doCancelar() { this.getController().setCurrentState(ControllerState.PESQUISAR_STATE); } @Override public void doEditar() { // TODO Auto-generated method stub } @Override public void doLimpar() { // TODO Auto-generated method stub } @Override public void doListar() { // TODO Auto-generated method stub } @Override public void doPesquisar() { FacesMessages.instance().add(Severity.INFO, "Nenhum registro foi encontrado!"); this.getController().setHabilitaNovoCadastro(true); } @Override public void doSalvar() { this.getController().setCurrentState(ControllerState.PESQUISAR_STATE); if (cargo != null) System.out.println(cargo.getNomeCargo()); } @SuppressWarnings("unchecked") public List<Cargo> getCargos() { if (cargos == null) { cargos = seamDatabase.createCriteria(Cargo.class).list(); } return cargos; } public void setCargos(List<Cargo> cargos) { this.cargos = cargos; } public Cargo getCargo() { return cargo; } public void setCargo(Cargo cargo) { this.cargo = cargo; } }"
components.xml
<?xml version="1.0" encoding="UTF-8"?> <components xmlns="http://jboss.com/products/seam/components" xmlns:core="http://jboss.com/products/seam/core" xmlns:persistence="http://jboss.com/products/seam/persistence" xmlns:security="http://jboss.com/products/seam/security" xmlns:drools="http://jboss.com/products/seam/drools" xmlns:web="http://jboss.com/products/seam/web" xmlns:mail="http://jboss.com/products/seam/mail" xmlns:transaction="http://jboss.com/products/seam/transaction" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ui="http://jboss.com/products/seam/ui" xsi:schemaLocation="http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.1.xsd http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.1.xsd http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.1.xsd http://jboss.com/products/seam/ui http://jboss.com/products/seam/ui-2.1.xsd http://jboss.com/products/seam/transaction http://jboss.com/products/seam/transaction-2.1.xsd http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.1.xsd http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.1.xsd"> <core:manager conversation-timeout="120000" concurrent-request-timeout="500" conversation-id-parameter="cid" /> <persistence:hibernate-session-factory name="hibernateSessionFactory" /> <persistence:managed-hibernate-session name="seamDatabase" session-factory="#{hibernateSessionFactory}" auto-create="true" /> <transaction:hibernate-transaction session="#{seamDatabase}" /> <ui:hibernate-entity-loader session="#{seamDatabase}" /> </components>
user.xhmtl
<h:form> <h:selectOneMenu id="campoCargo" label="Cargo" value="#{usuarioAction.cargo}" required="true"> <s:selectItems var="cargo" value="#{usuarioAction.cargos}" label="#{cargo.nomeCargo}" noSelectionLabel="-- SELECIONA UM CARGO --"/> <s:convertEntity/> </h:selectOneMenu> <h:commandButton action="#{usuarioAction.doSalvar}" value="Salvar" /> </h:form>