ERRO ESTRANHO NO VRaptor OU hibernate

5 respostas
andreluis

Eu utilizo um gecao de dependente do result, e para alimentar meus comobox eu utiliza includ.

<dl>
	<dt><label for="leitor.cidade">Cidade:</label></dt>
	<dd><select name="leitor.cidade.id" id="leitor.cidade"  />
	<option value="">Selecione</option>
		<c:forEach items="${listaCidade}" var="cidade">
			<option value="${ciadade.id}">${cidade.descCidade}</option>
		</c:forEach>
	</select></dd>
</dl>
ERRO

exception

br.com.caelum.vraptor.InterceptionException: an exception was raised while executing resource method
br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)

root cause

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: br.com.biblioteca.entidades.cadastros.Bairro
org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:242)
org.hibernate.type.EntityType.getIdentifier(EntityType.java:430)
org.hibernate.type.ManyToOneType.isDirty(ManyToOneType.java:265)
org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:619)
org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:3151)
org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:501)
org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:227)
org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:150)
org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:219)
org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:99)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:49)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
br.com.biblioteca.Dao.cadastros.LeitorDao.salva(LeitorDao.java:24)
br.com.biblioteca.controller.cadastros.LeitorController.adiciona(LeitorController.java:27)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)

5 Respostas

Lucas_Cavalcanti

a sua entidade tem um atributo do tipo Bairro? vc salvou esse atributo antes de salvar a entidade?

andreluis

Me desculpe sou iniciante,
como faço para salvo um atributo primeiro e depois uma entidade?

G

Para que possamos ajudar é necessário que você passe o maio número de informações possíveis. Por exemplo, isso acontece quando? Quais os parametros passados na consulta? Como você faz a consulta?

Além disso, como você mesmo disse ser iniciante, é necessário você conhecer o que você quer usar. Leia a documentação do Hibernate e a entenda e evite aprender na base da tentativa e erro.

Esse erro acontece quando você executa alguma consulta via Criteria usando algum objeto vazio, exemplo:

Criteria c = [...]

Cliente cliente = new Cliente();
cliente.setTipo(new Tipo());

c.add(Restrictions.eq("tipo", tipo));

Ou seja, você faz a pesquisa passando uma entidade que relaciona one-to-many ou many-to-one sem a PK.

andreluis

Ola, seguinte, eu tenho um formulário de leitor, e nele possuo um atributo bairro relacionado com uma entidade Bairro, no formulario, quando não lanço um bairro (Deixo em branco), acontece o erro, oque eu acho estranho pois tenho diversos de cadastros que possuem relacionamentos many-to-one e somente nesse atributo acontece isso, se o erro acontece quando não foi gravado primeiro, porque acontece se eu deixar vazio?

minha Classe Entidade

package br.com.biblioteca.entidades.cadastros;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

@Entity
public class Leitor {
	
	@Id
	@GeneratedValue
	private Long id;
	private String nome;
	private Date dataNascimento;
	private Date dataCad;
	private String Sexo;
	private String escolaridade;
	private String naturalidade;
	private String nomepai;
	private String nomemae;
	private String rg;
	private String cpf;
	private String telefoneComercial;
	private String telefoneResidencial;
	private String telefoneFax;
	private String telefoneCelular;
	private String matricula;
	private String horario;
	private String turma;
	private String endereco;
	private String numero;
	@ManyToOne
	private Bairro bairro;
	@ManyToOne
	private Cidade cidade;
	private String estado;
	private String complemento;
	private String cep;
	private String email;
	private String observacao;
	private String foto;
	private String historico;
	private char status;
	private Boolean avisaemail;
	private Date dataExpiracao;
	private String login;
	private String senha;
	
	public   Long getId() {
		return id;
	}
	public   void setId(Long id) {
		this.id = id;
	}
	public   String getNome() {
		return nome;
	}
	public   void setNome(String nome) {
		this.nome = nome;
	}
	
	public Date getDataNascimento() {
		return dataNascimento;
	}
	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}
	public Date getDataCad() {
		return dataCad;
	}
	public void setDataCad(Date dataCad) {
		this.dataCad = dataCad;
	}
	public   String getSexo() {
		return Sexo;
	}
	public   void setSexo(String sexo) {
		Sexo = sexo;
	}
	public   String getEscolaridade() {
		return escolaridade;
	}
	public   void setEscolaridade(String escolaridade) {
		this.escolaridade = escolaridade;
	}
	public   String getNaturalidade() {
		return naturalidade;
	}
	public   void setNaturalidade(String naturalidade) {
		this.naturalidade = naturalidade;
	}
	public   String getNomepai() {
		return nomepai;
	}
	public   void setNomepai(String nomepai) {
		this.nomepai = nomepai;
	}
	public   String getNomemae() {
		return nomemae;
	}
	public   void setNomemae(String nomemae) {
		this.nomemae = nomemae;
	}
	public   String getRg() {
		return rg;
	}
	public   void setRg(String rg) {
		this.rg = rg;
	}
	public   String getCpf() {
		return cpf;
	}
	public   void setCpf(String cpf) {
		this.cpf = cpf;
	}
	public   String getTelefoneComercial() {
		return telefoneComercial;
	}
	public   void setTelefoneComercial(String telefoneComercial) {
		this.telefoneComercial = telefoneComercial;
	}
	public   String getTelefoneResidencial() {
		return telefoneResidencial;
	}
	public   void setTelefoneResidencial(String telefoneResidencial) {
		this.telefoneResidencial = telefoneResidencial;
	}
	public   String getTelefoneFax() {
		return telefoneFax;
	}
	public   void setTelefoneFax(String telefoneFax) {
		this.telefoneFax = telefoneFax;
	}
	public   String getTelefoneCelular() {
		return telefoneCelular;
	}
	public   void setTelefoneCelular(String telefoneCelular) {
		this.telefoneCelular = telefoneCelular;
	}
	public   String getMatricula() {
		return matricula;
	}
	public   void setMatricula(String matricula) {
		this.matricula = matricula;
	}
	public   String getHorario() {
		return horario;
	}
	public   void setHorario(String horario) {
		this.horario = horario;
	}
	public   String getTurma() {
		return turma;
	}
	public   void setTurma(String turma) {
		this.turma = turma;
	}
	public   String getEndereco() {
		return endereco;
	}
	public   void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	public   String getNumero() {
		return numero;
	}
	public   void setNumero(String numero) {
		this.numero = numero;
	}
	public   Bairro getBairro() {
		return bairro;
	}
	public   void setBairro(Bairro bairro) {
		this.bairro = bairro;
	}
	public   Cidade getCidade() {
		return cidade;
	}
	public   void setCidade(Cidade cidade) {
		this.cidade = cidade;
	}
	public   String getEstado() {
		return estado;
	}
	public   void setEstado(String estado) {
		this.estado = estado;
	}
	public   String getComplemento() {
		return complemento;
	}
	public   void setComplemento(String complemento) {
		this.complemento = complemento;
	}
	public   String getCep() {
		return cep;
	}
	public   void setCep(String cep) {
		this.cep = cep;
	}
	public   String getEmail() {
		return email;
	}
	public   void setEmail(String email) {
		this.email = email;
	}
	public   String getObservacao() {
		return observacao;
	}
	public   void setObservacao(String observacao) {
		this.observacao = observacao;
	}
	public   String getFoto() {
		return foto;
	}
	public   void setFoto(String foto) {
		this.foto = foto;
	}
	public   String getHistorico() {
		return historico;
	}
	public   void setHistorico(String historico) {
		this.historico = historico;
	}
	public   char getStatus() {
		return status;
	}
	public   void setStatus(char status) {
		this.status = status;
	}
	public   Boolean getAvisaemail() {
		return avisaemail;
	}
	public   void setAvisaemail(Boolean avisaemail) {
		this.avisaemail = avisaemail;
	}
	public   Date getDataExpiracao() {
		return dataExpiracao;
	}
	public   void setDataExpiracao(Date dataExpiracao) {
		this.dataExpiracao = dataExpiracao;
	}
	public   String getLogin() {
		return login;
	}
	public   void setLogin(String login) {
		this.login = login;
	}
	public   String getSenha() {
		return senha;
	}
	public   void setSenha(String senha) {
		this.senha = senha;
	}
	
	
	 
}
Lucas_Cavalcanti

tenta debugar o código no servidor (ou colocar uns System.out.println’s antes de salvar o leitor) e ver antes de salvar o bairro tah null mesmo… se tiver qqer objeto lah, mesmo um bairro vazio vai dar aquele erro

Criado 20 de junho de 2010
Ultima resposta 21 de jun. de 2010
Respostas 5
Participantes 3