Recebendo WrongClassException

Java

30/01/2014

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
Alberto Leal

Alberto Leal

Curtidas 0
POSTAR