Ola pessoal
Bem estou com um problema aqui na hora de salvar uma “venda”, e nao sei o que tem de errado…
Primeiro eu conseguia salvar uma venda e um produto na tabela itens… mesmo tendo vários produtos… mas agora tem o erro antes mesmo de salvar a venda
obs: em @manytoOne eu coloquei a anotacao (cascade = CascadeType.ALL ,fetch=FetchType.LAZY), antes nao tinha nada era somente o @ManyToOne
mas o erro persiste
tvz se alguem puder me ajudar???
obrigado
=]
codigo botao “Efetuar Venda”
[code]
//inicia um nova venda
Venda venda = new Venda();
//busca por cliente
Cliente cliente = daoCliente.buscaPorCodigo(1);//Integer.parseInt(jtfCodigoCliente.getText()));
int codigoVenda = Integer.parseInt(jtfCodigoVenda.getText());
venda.setCliente(cliente);
//seta alguns atributos da venda
venda.setDataPrevista(MetodosVisual.data_deStringParaBanco(jtfDataPosVenda.getText()));
venda.setDataVenda(MetodosVisual.data_deStringParaBanco(jtfDataAtual.getText()));
venda.setDescricaoServico(jtpDescricaoDoServico.getText());
venda.setFlag(2);
venda.setObservacao(jtpObservacoes.getText());
venda.setPrecoFinal(Float.parseFloat(jtfPrecoFinal.getText()));
int linhas = dtmitens.getRowCount();
Itens itens = new Itens();
//percorre as linhas da tabela pra ver quantos produtos foram selecionados
for (int i = 0; i < linhas; i++) {
int codigoProduto = Integer.parseInt(String.valueOf(dtmitens.getValueAt(i,0)));
Produto produto = daoProduto.buscaPorCodigo(codigoProduto);
itens.setPrecoTotal(Float.parseFloat(String.valueOf(dtmitens.getValueAt(i,5))));
itens.setPrecoUnitario(Float.parseFloat(String.valueOf(dtmitens.getValueAt(i,4))));
itens.setQuantidade(Integer.parseInt(String.valueOf(dtmitens.getValueAt(i,2))));
itens.setVenda(venda);
itens.setProduto(produto);
//depois de setados a venda e produto pra tabela itens adiciona o “itens” na venda
venda.addItens(itenss);
}
//salva venda no banco… (a venda na tabela venda, e na tabela itens o codigo_venda, codigo_produto etc)
daoVenda.salvarVenda(venda);
[/code]
classe itens
package org.iVitrim.model;
import java.io.Serializable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
/**
* Classe de entidade Itens
*
* @author Tiago Link
*/
@Entity
@Table(name = "itens")
@NamedQueries( {
@NamedQuery(name = "Itens.findByCodigo", query = "SELECT i FROM Itens i WHERE i.codigo = :codigo"),
@NamedQuery(name = "Itens.findByQuantidade", query = "SELECT i FROM Itens i WHERE i.quantidade = :quantidade"),
@NamedQuery(name = "Itens.findByPrecoTotal", query = "SELECT i FROM Itens i WHERE i.precoTotal = :precoTotal"),
@NamedQuery(name = "Itens.findByPrecoUnitario", query = "SELECT i FROM Itens i WHERE i.precoUnitario = :precoUnitario"),
@NamedQuery(name = "Itens.find", query = "SELECT i FROM Itens i")
})
public class Itens implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "CODIGO", nullable = false)
private Integer codigo;
@Column(name = "QUANTIDADE")
private Integer quantidade;
@Column(name = "PRECO_TOTAL")
private Float precoTotal;
@Column(name = "PRECO_UNITARIO")
private Float precoUnitario;
@JoinColumn(name = "VENDA_CODIGO", referencedColumnName = "CODIGO")
@ManyToOne(cascade = CascadeType.ALL ,fetch=FetchType.LAZY)
private Venda vendaCodigo;
@JoinColumn(name = "PRODUTO_CODIGO", referencedColumnName = "CODIGO")
@ManyToOne(cascade = CascadeType.ALL ,fetch=FetchType.LAZY)
private Produto produtoCodigo;
/** Creates a new instance of Itens */
public Itens() {
}
/**
* Cria uma nova instância de Itens com os valores especificados.
* @param codigo o codigo do Itens
*/
public Itens(Integer codigo) {
this.codigo = codigo;
}
/**
* Define o codigo deste Itens.
* @return o codigo
*/
public Integer getCodigo() {
return this.codigo;
}
/**
* Define o codigo deste Itens para o valor especificado.
* @param codigo o novo codigo
*/
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
/**
* Define o quantidade deste Itens.
* @return o quantidade
*/
public Integer getQuantidade() {
return this.quantidade;
}
/**
* Define o quantidade deste Itens para o valor especificado.
* @param quantidade o novo quantidade
*/
public void setQuantidade(Integer quantidade) {
this.quantidade = quantidade;
}
/**
* Define o precoTotal deste Itens.
* @return o precoTotal
*/
public Float getPrecoTotal() {
return this.precoTotal;
}
/**
* Define o precoTotal deste Itens para o valor especificado.
* @param precoTotal o novo precoTotal
*/
public void setPrecoTotal(Float precoTotal) {
this.precoTotal = precoTotal;
}
/**
* Define o precoUnitario deste Itens.
* @return o precoUnitario
*/
public Float getPrecoUnitario() {
return this.precoUnitario;
}
/**
* Define o precoUnitario deste Itens para o valor especificado.
* @param precoUnitario o novo precoUnitario
*/
public void setPrecoUnitario(Float precoUnitario) {
this.precoUnitario = precoUnitario;
}
/**
* Define o vendaCodigo deste Itens.
* @return o vendaCodigo
*/
public Venda getVenda() {
return this.vendaCodigo;
}
/**
* Define o vendaCodigo deste Itens para o valor especificado.
* @param vendaCodigo o novo vendaCodigo
*/
public void setVenda(Venda venda) {
this.vendaCodigo = venda;
}
/**
* Define o produtoCodigo deste Itens.
* @return o produtoCodigo
*/
public Produto getProduto() {
return this.produtoCodigo;
}
/**
* Define o produtoCodigo deste Itens para o valor especificado.
* @param produtoCodigo o novo produtoCodigo
*/
public void setProduto(Produto produto) {
this.produtoCodigo = produto;
}
/**
* Retorna um valor de código hash para o objeto. Esta implementação computa
* um valor de código hash baseado nos campos id deste objeto.
* @return um valor de código hash para este objeto.
*/
@Override
public int hashCode() {
int hash = 0;
hash += (this.codigo != null ? this.codigo.hashCode() : 0);
return hash;
}
/**
* Determina se outro objeto é igual a este Itens. O resultado é
* <code>true</code> se e somente se o argumento não for nulo e for um objeto Itens o qual
* tem o mesmo valor para o campo id como este objeto.
* @param object o objeto de referência com o qual comparar
* @return <code>true</code> se este objeto é o mesmo como o argumento;
* <code>false</code> caso contrário.
*/
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Itens)) {
return false;
}
Itens other = (Itens)object;
if (this.codigo != other.codigo && (this.codigo == null || !this.codigo.equals(other.codigo))) return false;
return true;
}
/**
* Retorna uma representação literal deste objeto. Esta implementação cria
* uma representação baseada nos campos id.
* @return uma representação literal deste objeto.
*/
@Override
public String toString() {
return "org.iVitrim.model.Itens[codigo=" + codigo + "]";
}
}
classe venda
/*
* Venda.java
*
* Created on 18 de Outubro de 2007, 23:44
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package org.iVitrim.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
* Classe de entidade Venda
*
* @author Tiago Link
*/
@Entity
@Table(name = "venda")
@NamedQueries( {
@NamedQuery(name = "Venda.findByCodigo", query = "SELECT v FROM Venda v WHERE v.codigo = :codigo"),
@NamedQuery(name = "Venda.findByDataVenda", query = "SELECT v FROM Venda v WHERE v.dataVenda = :dataVenda"),
@NamedQuery(name = "Venda.findByDataPrevista", query = "SELECT v FROM Venda v WHERE v.dataPrevista = :dataPrevista"),
@NamedQuery(name = "Venda.findByPrecoFinal", query = "SELECT v FROM Venda v WHERE v.precoFinal = :precoFinal"),
@NamedQuery(name = "Venda.findByFlag", query = "SELECT v FROM Venda v WHERE v.flag = :flag"),
@NamedQuery(name = "Venda.find", query = "SELECT v FROM Venda v order by v.dataVenda")
})
public class Venda implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "CODIGO", nullable = false)
private Integer codigo;
@Column(name = "DATA_VENDA")
@Temporal(TemporalType.DATE)
private Date dataVenda;
@Column(name = "DATA_PREVISTA")
@Temporal(TemporalType.DATE)
private Date dataPrevista;
@Lob
@Column(name = "DESCRICAO_SERVICO")
private String descricaoServico;
@Lob
@Column(name = "OBSERVACAO")
private String observacao;
@Column(name = "PRECO_FINAL")
private Float precoFinal;
@Column(name = "FLAG")
private Integer flag;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "vendaCodigo")
private Collection<Feedback> feedbackCollection;
@JoinColumn(name = "CLIENTE_CODIGO", referencedColumnName = "CODIGO")
@ManyToOne(cascade = CascadeType.ALL ,fetch=FetchType.LAZY)
private Cliente clienteCodigo;
@OneToMany(cascade = CascadeType.ALL,fetch=FetchType.LAZY, mappedBy = "vendaCodigo")
private Collection<Pgto> pgtoCollection;
@OneToMany(cascade = CascadeType.ALL,fetch=FetchType.LAZY, mappedBy = "vendaCodigo")
private Collection<Itens> itensCollection;
/** Creates a new instance of Venda */
public Venda() {
}
/**
* Cria uma nova instância de Venda com os valores especificados.
* @param codigo o codigo do Venda
*/
public Venda(Integer codigo) {
this.codigo = codigo;
}
/**
* Define o codigo deste Venda.
* @return o codigo
*/
public Integer getCodigo() {
return this.codigo;
}
/**
* Define o codigo deste Venda para o valor especificado.
* @param codigo o novo codigo
*/
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
/**
* Define o dataVenda deste Venda.
* @return o dataVenda
*/
public Date getDataVenda() {
return this.dataVenda;
}
/**
* Define o dataVenda deste Venda para o valor especificado.
* @param dataVenda o novo dataVenda
*/
public void setDataVenda(Date dataVenda) {
this.dataVenda = dataVenda;
}
/**
* Define o descricaoServico deste Venda.
* @return o descricaoServico
*/
public String getDescricaoServico() {
return this.descricaoServico;
}
/**
* Define o descricaoServico deste Venda para o valor especificado.
* @param descricaoServico o novo descricaoServico
*/
public void setDescricaoServico(String descricaoServico) {
this.descricaoServico = descricaoServico;
}
/**
* Define o observacao deste Venda.
* @return o observacao
*/
public String getObservacao() {
return this.observacao;
}
/**
* Define o observacao deste Venda para o valor especificado.
* @param observacao o novo observacao
*/
public void setObservacao(String observacao) {
this.observacao = observacao;
}
/**
* Define o precoFinal deste Venda.
* @return o precoFinal
*/
public Float getPrecoFinal() {
return this.precoFinal;
}
/**
* Define o precoFinal deste Venda para o valor especificado.
* @param precoFinal o novo precoFinal
*/
public void setPrecoFinal(Float precoFinal) {
this.precoFinal = precoFinal;
}
/**
* Define o flag deste Venda.
* @return o flag
*/
public Integer getFlag() {
return this.flag;
}
/**
* Define o flag deste Venda para o valor especificado.
* @param flag o novo flag
*/
public void setFlag(Integer flag) {
this.flag = flag;
}
/**
* Define o feedbackCollection deste Venda.
* @return o feedbackCollection
*/
public Collection<Feedback> getFeedbackCollection() {
return this.feedbackCollection;
}
/**
* Define o feedbackCollection deste Venda para o valor especificado.
* @param feedbackCollection o novo feedbackCollection
*/
public void setFeedbackCollection(Collection<Feedback> feedbackCollection) {
this.feedbackCollection = feedbackCollection;
}
/**
* Define o clienteCodigo deste Venda.
* @return o clienteCodigo
*/
public Cliente getCliente() {
return this.clienteCodigo;
}
/**
* Define o clienteCodigo deste Venda para o valor especificado.
* @param clienteCodigo o novo clienteCodigo
*/
public void setCliente(Cliente cliente) {
this.clienteCodigo = cliente;
}
/**
* Define o pgtoCollection deste Venda.
* @return o pgtoCollection
*/
public Collection<Pgto> getPgtoCollection() {
return this.pgtoCollection;
}
/**
* Define o pgtoCollection deste Venda para o valor especificado.
* @param pgtoCollection o novo pgtoCollection
*/
public void setPgtoCollection(Collection<Pgto> pgtoCollection) {
this.pgtoCollection = pgtoCollection;
}
/**
* Define o itensCollection deste Venda.
* @return o itensCollection
*/
public Collection<Itens> getItensCollection() {
return this.itensCollection;
}
/**
* Define o itensCollection deste Venda para o valor especificado.
* @param itensCollection o novo itensCollection
*/
public void setItensCollection(Collection<Itens> itensCollection) {
this.itensCollection = itensCollection;
}
public void addItens(Itens item){
if(this.itensCollection == null){
this.itensCollection = new ArrayList<Itens>();
}
this.itensCollection.add(item);
}
public void addPdto(Pgto pagamento){
if(this.pgtoCollection == null){
this.pgtoCollection = new ArrayList<Pgto>();
}
this.pgtoCollection.add(pagamento);
}
/**
* Retorna um valor de código hash para o objeto. Esta implementação computa
* um valor de código hash baseado nos campos id deste objeto.
* @return um valor de código hash para este objeto.
*/
@Override
public int hashCode() {
int hash = 0;
hash += (this.codigo != null ? this.codigo.hashCode() : 0);
return hash;
}
/**
* Determina se outro objeto é igual a este Venda. O resultado é
* <code>true</code> se e somente se o argumento não for nulo e for um objeto Venda o qual
* tem o mesmo valor para o campo id como este objeto.
* @param object o objeto de referência com o qual comparar
* @return <code>true</code> se este objeto é o mesmo como o argumento;
* <code>false</code> caso contrário.
*/
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Venda)) {
return false;
}
Venda other = (Venda)object;
if (this.codigo != other.codigo && (this.codigo == null || !this.codigo.equals(other.codigo))) return false;
return true;
}
/**
* Retorna uma representação literal deste objeto. Esta implementação cria
* uma representação baseada nos campos id.
* @return uma representação literal deste objeto.
*/
@Override
public String toString() {
return "org.iVitrim.model.Venda[codigo=" + codigo + "]";
}
public Date getDataPrevista() {
return dataPrevista;
}
public void setDataPrevista(Date dataPrevista) {
this.dataPrevista = dataPrevista;
}
}
classe produto
/*
* Produto.java
*
* Created on 18 de Outubro de 2007, 23:44
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package org.iVitrim.model;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
/**
* Classe de entidade Produto
*
* @author Tiago Link
*/
@Entity
@Table(name = "produto")
@NamedQueries( {
@NamedQuery(name = "Produto.findByCodigo", query = "SELECT p FROM Produto p WHERE p.codigo = :codigo"),
@NamedQuery(name = "Produto.findByNome", query = "SELECT p FROM Produto p WHERE p.nome LIKE :nome"),
@NamedQuery(name = "Produto.findByUnidadeMedida", query = "SELECT p FROM Produto p WHERE p.unidadeMedida = :unidadeMedida"),
@NamedQuery(name = "Produto.findByPrecoUnitario", query = "SELECT p FROM Produto p WHERE p.precoUnitario = :precoUnitario"),
@NamedQuery(name = "Produto.find", query = "SELECT p FROM Produto p")
})
public class Produto implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "CODIGO", nullable = false)
private Integer codigo;
@Column(name = "NOME", nullable = false)
private String nome;
@Column(name = "UNIDADE_MEDIDA", nullable = false)
private String unidadeMedida;
@Column(name = "PRECO_UNITARIO", nullable = false)
private float precoUnitario;
@OneToMany(cascade = CascadeType.ALL,fetch=FetchType.LAZY, mappedBy = "produtoCodigo")
private Collection<Itens> itensCollection;
/** Creates a new instance of Produto */
public Produto() {
}
/**
* Cria uma nova instância de Produto com os valores especificados.
* @param codigo o codigo do Produto
*/
public Produto(Integer codigo) {
this.codigo = codigo;
}
/**
* Cria uma nova instância de Produto com os valores especificados.
* @param codigo o codigo do Produto
* @param nome o nome do Produto
* @param unidadeMedida o unidadeMedida do Produto
* @param precoUnitario o precoUnitario do Produto
*/
public Produto(Integer codigo, String nome, String unidadeMedida, float precoUnitario) {
this.codigo = codigo;
this.nome = nome;
this.unidadeMedida = unidadeMedida;
this.precoUnitario = precoUnitario;
}
/**
* Define o codigo deste Produto.
* @return o codigo
*/
public Integer getCodigo() {
return this.codigo;
}
/**
* Define o codigo deste Produto para o valor especificado.
* @param codigo o novo codigo
*/
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
/**
* Define o nome deste Produto.
* @return o nome
*/
public String getNome() {
return this.nome;
}
/**
* Define o nome deste Produto para o valor especificado.
* @param nome o novo nome
*/
public void setNome(String nome) {
this.nome = nome;
}
/**
* Define o unidadeMedida deste Produto.
* @return o unidadeMedida
*/
public String getUnidadeMedida() {
return this.unidadeMedida;
}
/**
* Define o unidadeMedida deste Produto para o valor especificado.
* @param unidadeMedida o novo unidadeMedida
*/
public void setUnidadeMedida(String unidadeMedida) {
this.unidadeMedida = unidadeMedida;
}
/**
* Define o precoUnitario deste Produto.
* @return o precoUnitario
*/
public float getPrecoUnitario() {
return this.precoUnitario;
}
/**
* Define o precoUnitario deste Produto para o valor especificado.
* @param precoUnitario o novo precoUnitario
*/
public void setPrecoUnitario(float precoUnitario) {
this.precoUnitario = precoUnitario;
}
/**
* Define o itensCollection deste Produto.
* @return o itensCollection
*/
public Collection<Itens> getItensCollection() {
return this.itensCollection;
}
/**
* Define o itensCollection deste Produto para o valor especificado.
* @param itensCollection o novo itensCollection
*/
public void setItensCollection(Collection<Itens> itensCollection) {
this.itensCollection = itensCollection;
}
/**
* Retorna um valor de código hash para o objeto. Esta implementação computa
* um valor de código hash baseado nos campos id deste objeto.
* @return um valor de código hash para este objeto.
*/
@Override
public int hashCode() {
int hash = 0;
hash += (this.codigo != null ? this.codigo.hashCode() : 0);
return hash;
}
/**
* Determina se outro objeto é igual a este Produto. O resultado é
* <code>true</code> se e somente se o argumento não for nulo e for um objeto Produto o qual
* tem o mesmo valor para o campo id como este objeto.
* @param object o objeto de referência com o qual comparar
* @return <code>true</code> se este objeto é o mesmo como o argumento;
* <code>false</code> caso contrário.
*/
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Produto)) {
return false;
}
Produto other = (Produto)object;
if (this.codigo != other.codigo && (this.codigo == null || !this.codigo.equals(other.codigo))) return false;
return true;
}
/**
* Retorna uma representação literal deste objeto. Esta implementação cria
* uma representação baseada nos campos id.
* @return uma representação literal deste objeto.
*/
@Override
public String toString() {
return "org.iVitrim.model.Produto[codigo=" + codigo + "]";
}
}
o ERRO
init:
deps-jar:
Compiling 4 source files to D:\programacao\Aula\Projeto_iVitrim\iVitrim\build\classes
compile:
run:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: org.iVitrim.model.Cliente
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:630)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:219)
at org.iVitrim.dao.DAOVenda.salvarVenda(DAOVenda.java:41)
at org.iVitrim.telas.Vendas.jbtEfetuarVendaActionPerformed(Vendas.java:946)
at org.iVitrim.telas.Vendas.access$1500(Vendas.java:31)
at org.iVitrim.telas.Vendas$18.actionPerformed(Vendas.java:603)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: org.iVitrim.model.Cliente
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:79)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:609)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:601)
at org.hibernate.engine.EJB3CascadingAction$1.cascade(EJB3CascadingAction.java:30)
at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:268)
at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:216)
at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:169)
at org.hibernate.engine.Cascade.cascade(Cascade.java:130)
at org.hibernate.event.def.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:431)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:265)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGeneratedId(EJB3PersistEventListener.java:49)
at org.hibernate.event.def.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:131)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:87)
at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)
at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:213)
... 29 more