Ecebendo WrongClassException

0 respostas
E

Ola eu tenho um sistema de vendas e tenho nele tenho o objeto pessoa que é uma classe abstrata que ela é extendida para a classe pessoaJuridica ,Cliente Fornecedor e Transportadora extendem de pessoa Juridica. E tenho os objetos Venda e produto. E estou tendo o seguinte problema:
Quando eu insiro um produto cujo o fornecedor o id 00025 e ao informar a transportadora tambem é id 00025 eu recebo a seguinte execption ao listar os produtos da venda
org.hibernate.WrongClassException: Object with id: 00025 was not of the specified subclass: br.com.venda.model.Fornecedor (loaded object was of wrong class class br.com.venda.model.Transportadora). Isso acontece sempre que eu tiver um produto cujo o id do fornecedor for igual ao id do transportadora.
Minhas classes estao assim:

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Pessoa implements Serializable {
    private static final long serialVersionUID = -1557210475650925346L;
     
    @Id
    private String id;
    private String telefone;
    @Embedded
    private Endereco endereco;
  ....
}
 
public abstract class PessoaJuridica extends Pessoa implements Serializable{
    private static final long serialVersionUID = 8310263311317790248L;
     
    private String cnpj;
    private String razao_social;
    private String fantasia;
    private String ie;
    @Column(nullable = true)
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dataAberturaEmpresa;
  ....
}
@Entity
public class Fornecedor extends PessoaJuridica implements Serializable{
    private static final long serialVersionUID = 2323460858234027882L;
    @OneToMany(mappedBy = "fornecedor")
    private List<Produto> listaDeProdutos;
  ....
}
@Entity
public class Transportadora extends PessoaJuridica implements Serializable {
    private static final long serialVersionUID = 2756722733870907218L;
 
    @Type(type = "br.com.venda.enumeradores.Types.StatusTipoFreteType")
    private TipoFrete tipoFrete;
    private String valorFrete;
    @Type(type = "br.com.venda.enumeradores.Types.StatusModalType")
    private TipoModalidadeFrete modalFrete;
  ....
}

e o erro da toda vez nessa parte

public List<VendaProduto> BuscarProdutodaVenda(Venda venda) {
    Criteria criteria = getSession().createCriteria(VendaProduto.class);
    criteria.add(Restrictions.eq("venda", venda));
    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    List<VendaProduto> cid = null;
    try {
        cid = criteria.list();    <= retorna null
    } catch (HibernateException ex) {
        ex.printStackTrace();
        Mensagens.MsgOps(ex.getMessage());
    } finally {
        closeSession(getSession());
    }
    return cid;
}

Os ids nao sao gerenciados por esse sistema, sao todos importados de outro sistema por isso que nao sao autoincremento
Jah googlei mas ate o momento nenhuma solucao… alguem teria uma luz ou um caminho que deva seguir ?
Obrigado

Criado 31 de janeiro de 2014
Respostas 0
Participantes 1