Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
12
respostas

org.hibernate.type.SerializationException: could not deserialize

Estou tentando execultar uma consulta com parâmetro e ocorre o erro "could not deserialize". Alguém sabe o motivo? Já tentei de tudo e o erro persiste.. A classe ContaJudicial extend de BaseEntidade que implementa o Serializable.

Segue abaixo, a consulta, mapeamento da Entidade e o Log de erro:

Tenho uma consulta conforme abaixo: `public List buscarContaJudicialPorProcesso(String numeroProcesso) {

StringBuilder consulta = new StringBuilder(); consulta.append("Select cjud "); consulta.append(criarComandoPesquisaEntidade("cjud")); consulta.append("WHERE cjud.processoTrf = :numeroProcesso");

TypedQuery query = getEntityManager().createQuery(consulta.toString(), ContaJudicial.class); query.setParameter("numeroProcesso", numeroProcesso);

return query.getResultList();

} Classe Entidade:@Entity @Table(name = "tb_conta_judicial") public class ContaJudicial extends BaseEntidade{

/* serial version UID genereted */ private static final long serialVersionUID = 444757811347691043L;

@Id @SequenceGenerator(name = "sequence_generated_conta_judicial", sequenceName = "sq_tb_conta_judicial") @GeneratedValue(generator = "sequence_generated_conta_judicial") @Column(name = "id_conta_judicial", unique = true, nullable = false) private Long id;

@Column(name = "cd_conta", length = 17) @Size(max = 17) private String numero;

@Column(name="id_processo_trf", length=20) @Size(max=20) private String processoTrf;

@ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "id_banco") private Banco banco;

@Column(name = "numero_conta", length = 70) @Size(max = 70) public String getNumero() { return this.numero; }

public void setNumero(String numero) { this.numero = numero; }

@ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "id_banco") public Banco getBanco() { return this.banco; }

/* @param banco the banco to set */ public void setBanco(Banco banco) { this.banco = banco; }

public String getProcessoTrf(){ return this.processoTrf; }

/* @param processoJT the processoJT to set */ public void setProcessoTrf(String processoTrf) { this.processoTrf = processoTrf; }

`

12 respostas

Boa tarde Adriana, pode postar a stack de erro ?

Sim.. Estava mto grande.. Segue o link https://gist.github.com/anonymous/625be0850f1bd06d10fe8f3ce634d124

ah sim, qual versão do hibernate está usando ?

Estou usando 5.0.11.Final-redhat-1 e jpa 2.1

Adriana, não tive esse erro mas vamos tentar algumas coisas!!

Primeiro queria que tirasse as annotations de cima do método getBanco(), se não funcionar cola pra mim a classe Banco

Não funcionou :( Classe banco no link: https://gist.github.com/aonaga/16918c6af1fdc01dbe96ef76d8ae8bb6

Esse erro pode ocorrer porque algum campo de algum modelo teu não está mapeado..

Na classe conta tem o

private List<ContaJudicial> contas;

Ele ta @transaient no get mas não sei a jpa está se perdendo com isso, ou se tem algum outro tipo seu sem mapeamento! dá uma olhada ai e me fala

Já comentei esta parte e não rolou antes de postar o erro. Também já tentei criar o Construtor sem parâmetro. Ex. public Banco() { }

Os mapeamentos estão corretos. Todas as colunas das Entidades Conta e Banco estão mapeadas.

Certo, bom, nesse caso vou pedir pra ti compartilhar o código no github pra olharmos aqui!

Tava olhando no banco de dados. A entidade ContaJudicial é chave estrangeira de outras tabelas que não fiz o mapeamento ainda no JPA. Pode ser isso o erro?

solução!

Pode ser sim, porque se você tem uma outra entidade que tem um composição com ContaJudicial, você precisa indicar isso, senão a JPA vai se perder

Deu certo.. Tive q fazer o mapeamento de todas as tabelas envolvidas. Obrigada