tudo bom galera
to em um projeto já tem 3 meses… tava tudo perfeito ateh 5 dias atras… desde então tem sido um inferno
o motivo do TOE tem sido quando eu faço
// na classe controller
Empresa empresa = new Empresa();
empresa.setRazaoSocial("Razão social");
... // Ajusto os outros dados da empresa.
TipoDeEmpresa tipoDaEmpresa = new TipoDeEmpresa();
tipoDaEmpresa.setId(1); // Ajusto APENAS O ID do tipo da empresa. Funcionava perfeitamente antes.
// Ajusto o TipoDeEmpresa da Empresa.
empresa.setTipoEmpresa(tipoDaEmpresa);
// no GenericDAO
@PersistenceContext(name = "EJBPersistenceUnit", unitName = "EJBPersistenceUnit", type = PersistenceContextType.TRANSACTION)
private EntityManager entityManager;
@Override
public Session getSession() {
return ((HibernateEntityManager) entityManager).getSession();
}
// no metodo de salvar no genericDAO
final Session session = getSession();
session.saveOrUpdate(empresa);
session.flush();
dai vem
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.projectentitybeans.beans.Empresa.empresaTipo -> br.com.projectentitybeans.beans.EmpresaTipo
at org.hibernate.engine.CascadingAction$9.noCascade(CascadingAction.java:376)
at org.hibernate.engine.Cascade.cascade(Cascade.java:163)
at org.hibernate.event.def.AbstractFlushingEventListener.cascadeOnFlush(AbstractFlushingEventListener.java:154)
at org.hibernate.event.def.AbstractFlushingEventListener.prepareEntityFlushes(AbstractFlushingEventListener.java:145)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:88)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:49)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1028)
at br.com.meuprojeto.core.persistence.hibernate.DGenericHibernateDAO.saveOrUpdate(DGenericHibernateDAO.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:126)
at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:195)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:240)
at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:210)
at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:84)
at $Proxy85.saveOrUpdate(Unknown Source)
at br.com.projectejb.ejb.imp.EmpresaServiceBean.saveOrUpdate(EmpresaServiceBean.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:112)
at org.jboss.ejb3.interceptor.InvocationContextImpl.proceed(InvocationContextImpl.java:166)
at org.jboss.ejb3.interceptor.EJB3InterceptorsInterceptor.invoke(EJB3InterceptorsInterceptor.java:63)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:54)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:191)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:95)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:62)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:77)
at org.jboss.ejb3.security.Ejb3AuthenticationInterceptor.invoke(Ejb3AuthenticationInterceptor.java:110)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:46)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:240)
at org.jboss.ejb3.stateless.StatelessContainer.localInvoke(StatelessContainer.java:210)
at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:84)
at $Proxy224.saveOrUpdate(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at br.com.meuprojeto.core.service.user.DGenericDAOService.saveOrUpdate(DGenericDAOService.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at br.com.meuprojeto.core.util.DUtilReflection.invoke(DUtilReflection.java:59)
at br.com.meuprojeto.core.service.user.BlazeDSRemoteDestinationDefault.getService(BlazeDSRemoteDestinationDefault.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:418)
at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1400)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:1005)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:103)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:166)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:291)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:353)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Unknown Source)
// tem mais...
eu fiz algumas modificações nos meus beans que não sei se podem afetar o comportamento do Hibernate
elas foram:
- adicionar @Version em todos os beans com o tipo Integer
- NÃO MAIS fazer meus entity beans herdarem de uma classe abstrata qualquer apenas para me prevenir se eu precisar de algo abstrato (retirei o extends EntityBeanAbstrato que eu tinha antes)
- comecei a usar tipos Boolean e Integer para dados como empresaAtiva, qtdDeProdutos. Antes eu usava só String
obs: não posso voltar as configurações por exigencia do cliente
import java.io.Serializable;
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.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Version;
@Entity
@Table(name = "empresa")
@SequenceGenerator(name = "empresa_id_seq", sequenceName = "empresa_id_seq", initialValue = 1, allocationSize = 1)
public class Empresa implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private EmpresaTipo empresaTipo;
private Colaborador responsavel; // o TOE tb acontece para responsavel e contato
private Colaborador contato;
private String razaoSocial;
private String nomeFantasia;
private String cnpj;
private String cei;
private String inscricaoEstadual;
private String inscricaoMunicipal;
private String ean;
private String matriz;
private String status;
private String telefone;
private Integer version;
public Empresa() {
}
public Empresa(EmpresaTipo empresaTipo, Colaborador responsavel,
Colaborador contato, String razaoSocial, String nomeFantasia,
String cnpj, String cei, String inscricaoEstadual,
String inscricaoMunicipal, String ean, String matriz,
String status, String telefone) {
this.empresaTipo = empresaTipo;
this.responsavel = responsavel;
this.contato = contato;
this.razaoSocial = razaoSocial;
this.nomeFantasia = nomeFantasia;
this.cnpj = cnpj;
this.cei = cei;
this.inscricaoEstadual = inscricaoEstadual;
this.inscricaoMunicipal = inscricaoMunicipal;
this.ean = ean;
this.matriz = matriz;
this.status = status;
this.telefone = telefone;
}
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "empresa_id_seq")
@Column(name = "ID")
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "FK_EMPRESA_TIPO")
public EmpresaTipo getEmpresaTipo() {
return empresaTipo;
}
public void setEmpresaTipo(EmpresaTipo empresaTipo) {
this.empresaTipo = empresaTipo;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "FK_COLABORADOR_RESPONSAVEL")
public Colaborador getResponsavel() {
return this.responsavel;
}
public void setResponsavel(Colaborador responsavel) {
this.responsavel = responsavel;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "FK_COLABORADOR_CONTATO")
public Colaborador getContato() {
return this.contato;
}
public void setContato(Colaborador contato) {
this.contato = contato;
}
@Column(name = "RAZAO_SOCIAL", length = 100, nullable = false)
public String getRazaoSocial() {
return this.razaoSocial;
}
public void setRazaoSocial(String razaoSocial) {
this.razaoSocial = razaoSocial;
}
@Column(name = "NOME_FANTASIA", length = 100, nullable = false)
public String getNomeFantasia() {
return this.nomeFantasia;
}
public void setNomeFantasia(String nomeFantasia) {
this.nomeFantasia = nomeFantasia;
}
@Column(name = "CNPJ", length = 14, nullable = false, unique = true)
public String getCnpj() {
return this.cnpj;
}
public void setCnpj(String cnpj) {
this.cnpj = cnpj;
}
@Column(name = "CEI", length = 20)
public String getCei() {
return this.cei;
}
public void setCei(String cei) {
this.cei = cei;
}
@Column(name = "INSCRICAO_ESTADUAL", length = 20)
public String getInscricaoEstadual() {
return this.inscricaoEstadual;
}
public void setInscricaoEstadual(String inscricaoEstadual) {
this.inscricaoEstadual = inscricaoEstadual;
}
@Column(name = "INSCRICAO_MUNICIPAL", length = 20)
public String getInscricaoMunicipal() {
return this.inscricaoMunicipal;
}
public void setInscricaoMunicipal(String inscricaoMunicipal) {
this.inscricaoMunicipal = inscricaoMunicipal;
}
@Column(name = "EAN", length = 20)
public String getEan() {
return this.ean;
}
public void setEan(String ean) {
this.ean = ean;
}
@Column(name = "MATRIZ", length = 10)
public String getMatriz() {
return this.matriz;
}
public void setMatriz(String matriz) {
this.matriz = matriz;
}
@Column(name = "STATUS", length = 10)
public String getStatus() {
return this.status;
}
public void setStatus(String status) {
this.status = status;
}
@Column(name = "TELEFONE", length = 10)
public String getTelefone() {
return this.telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
@Version
@Column(name = "VERSION")
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((this.id == null) ? 0 : this.id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Empresa other = (Empresa) obj;
if (this.id == null) {
if (other.id != null)
return false;
} else if (!this.id.equals(other.id))
return false;
return true;
}
}
desde jah vlw