Erro de relacionamento

5 respostas
A

amigos, to tentando fazer uma consulta por criteria… mas no relacionamento ta dando o seguinte erro: como to começando no hibernate, não to conseguindo resolver…alguem pode dar um help??..agradeço desde jah…

Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: [PersistenceUnit: orcamentoPU] Unable to configure EntityManagerFactory
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:265)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:125)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
	at orcamento.Conectar.getsession(Conectar.java:24)
	at orcamento.Consultas.<init>(Consultas.java:28)
	at orcamento.inicioJF.<init>(inicioJF.java:349)
	at orcamento.inicioJF$25.run(inicioJF.java:905)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: tabelas.ConsOrcamento.COD_CONTA in tabelas.TbrjCadContas.consOrcamentoList
	at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:576)
	at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:541)
	at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:324)
	at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1115)
	at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1225)
	at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:159)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:854)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:191)
	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:253)
	... 15 more

segue a consulta e as 2 classes das tabelas…

crit = sess.createCriteria(ConsOrcamento.class)
     .setFetchMode("TbrjCadContas", FetchMode.JOIN)
     .add(Restrictions.like("ctCusto", "8%"))
     .add(Restrictions.eq("mes", mes));
@Entity
@Table(name = "ConsOrcamento")
@XmlRootElement

public class ConsOrcamento implements Serializable {
    private static final long serialVersionUID = 1L;
    @Column(name = "DT")
    @Temporal(TemporalType.DATE)
    
    private Date dt;
    @Column(name = "MES")
    private Long mes;
    @Id
    @Column(name = "COD_CONTA")
    @ManyToOne (targetEntity = tabelas.TbrjCadContas.class,fetch=FetchType.EAGER )
    
    private BigInteger codConta;
    @Size(max = 45)
    @Column(name = "FORNECEDOR")
   
    private String fornecedor;
    
    @Column(name = "ORCADO")
    private Float orcado;
    @Column(name = "GASTO")
    private Double gasto;
    
    @Size(max = 45)
    @Column(name = "CT_CUSTO")
    
    private String ctCusto;
    @Column(name = "EMPRESA")
    private Integer empresa;
    
    public ConsOrcamento() {
    }

    public Date getDt() {
        return dt;
    }

    public void setDt(Date dt) {
        this.dt = dt;
    }

    public Long getMes() {
        return mes;
    }

    public void setMes(Long mes) {
        this.mes = mes;
    }

    public BigInteger getCodConta() {
        return codConta;
    }

    public void setCodConta(BigInteger codConta) {
        this.codConta = codConta;
    }

    public String getFornecedor() {
        return fornecedor;
    }

    public void setFornecedor(String fornecedor) {
        this.fornecedor = fornecedor;
    }

    public Float getOrcado() {
        return orcado;
    }

    public void setOrcado(Float orcado) {
        this.orcado = orcado;
    }

    public Double getGasto() {
        return gasto;
    }

    public void setGasto(Double gasto) {
        this.gasto = gasto;
    }

    public String getCtCusto() {
        return ctCusto;
    }

    public void setCtCusto(String ctCusto) {
        this.ctCusto = ctCusto;
    }

    public Integer getEmpresa() {
        return empresa;
    }

    public void setEmpresa(Integer empresa) {
        this.empresa = empresa;
    }
    
    
}
@Entity
@Table(name = "TBRJ_CAD_CONTAS")

public class TbrjCadContas implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idTBRJ_CAD_CONTAS")
    private Integer idTBRJCADCONTAS;
    @Column(name = "COD_CONTA")
    @OneToMany(targetEntity = tabelas.ConsOrcamento.class, mappedBy = "COD_CONTA" )
    private List<ConsOrcamento> consOrcamentoList;
    
    private BigInteger codConta;
    @Column(name = "CONTA")
    private String conta;
    @Column(name = "NATUREZA")
    private String natureza;

    public TbrjCadContas() {
    }

    public TbrjCadContas(Integer idTBRJCADCONTAS) {
        this.idTBRJCADCONTAS = idTBRJCADCONTAS;
    }

    public Integer getIdTBRJCADCONTAS() {
        return idTBRJCADCONTAS;
    }

    public void setIdTBRJCADCONTAS(Integer idTBRJCADCONTAS) {
        this.idTBRJCADCONTAS = idTBRJCADCONTAS;
    }

    public BigInteger getCodConta() {
        return codConta;
    }

    public void setCodConta(BigInteger codConta) {
        this.codConta = codConta;
    }

    public String getConta() {
        return conta;
    }

    public void setConta(String conta) {
        this.conta = conta;
    }

    public String getNatureza() {
        return natureza;
    }

    public void setNatureza(String natureza) {
        this.natureza = natureza;
    }
    
    public List<ConsOrcamento> getconsOrcamentoList() {
        return consOrcamentoList;
    }

    public void setconsOrcamentoList(List<ConsOrcamento> consOrcamentoList) {
        this.consOrcamentoList = consOrcamentoList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idTBRJCADCONTAS != null ? idTBRJCADCONTAS.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof TbrjCadContas)) {
            return false;
        }
        TbrjCadContas other = (TbrjCadContas) object;
        if ((this.idTBRJCADCONTAS == null && other.idTBRJCADCONTAS != null) || (this.idTBRJCADCONTAS != null && !this.idTBRJCADCONTAS.equals(other.idTBRJCADCONTAS))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "tabelas.TbrjCadContas[idTBRJCADCONTAS=" + idTBRJCADCONTAS + "]";
    }

}

5 Respostas

rsakurai

O problema deve estar neste relacionamento.

@ManyToOne (targetEntity = tabelas.TbrjCadContas.class,fetch=FetchType.EAGER ) private BigInteger codConta;

nesse codConta vc quer representar um objeto do tipo TbrjCadContas ?

A

isso…na classe ConsOrcamento, vem o codconta… e eu preciso pegar o nome dessa conta na tabela TbrjCadContas…
Na verdade eu queria retornar o campo codConta da minha tabela principal e o nome da conta(da outra tabela)

rsakurai

Troca esse atributo para deixar do tipo da classe

Troca também os @Column e usa o @JoinColumn para relacionar as entitys.

Arruma na classe TbrjCadContas também.

A

agora da outro erro…rs

xception in thread "AWT-EventQueue-0" org.hibernate.type.SerializationException: could not deserialize
	at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:217)
	at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:240)
	at org.hibernate.type.SerializableType.fromBytes(SerializableType.java:82)
	at org.hibernate.type.SerializableType.get(SerializableType.java:39)
	at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:163)
	at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:154)
	at org.hibernate.loader.Loader.getKeyFromResultSet(Loader.java:1097)
	at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:565)
	at org.hibernate.loader.Loader.doQuery(Loader.java:701)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
	at org.hibernate.loader.Loader.doList(Loader.java:2220)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
	at org.hibernate.loader.Loader.list(Loader.java:2099)
	at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
	at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
	at orcamento.inicioJF.<init>(inicioJF.java:372)
	at orcamento.inicioJF$25.run(inicioJF.java:905)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: java.io.StreamCorruptedException: invalid stream header: 38313735
	at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
	at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
	at org.hibernate.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:252)
	at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:209)
	... 25 more
A

Conseguiu resolver??? pois estou com o mesmo problema

Criado 27 de maio de 2011
Ultima resposta 30 de nov. de 2011
Respostas 5
Participantes 3