Pessoal preciso da ajuda de vcs.
Estou tendo problemas ao tentar iniciar uma sessão com o hibernate utilizando annotations. Ao executar um teste pra saber se está tudo correto aparece este erro: [color=red]Exception in thread “main” org.hibernate.AnnotationException: Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements: Modelo.SerieDadosPib.dadosPibSerie[/color]
A pergunta é: Esqueci de algo ?
Abaixo estão as classes já anotadas e o código do programa principal. Tou fazendo a configuração no código pq vou ter que utilizar uma base de dados access pra uma aplicação pequena. Me ajudem aew pessoal, pq senão vou ter que voltar pro velho jdbc.
Valew
package Modelo;
import java.io.Serializable;
import java.util.ArrayList;
import javax.persistence.*;
@Entity
public class SerieDadosPib
implements Serializable
{
private Integer idSerieDadosPib;
private String descricao;
private ArrayList<DadoPib> dadosPibSerie;
@Id
@GeneratedValue
public Integer getIdSerieDadosPib()
{
return idSerieDadosPib;
}
public void setIdSerieDadosPib(Integer idSerieDadosPib)
{
this.idSerieDadosPib = idSerieDadosPib;
}
public String getDescricao()
{
return descricao;
}
public void setDescricao(String descricao)
{
this.descricao = descricao;
}
@OneToMany(mappedBy="serieDadosPib", cascade={ CascadeType.REMOVE })
public ArrayList<DadoPib> getDadosPibSerie()
{
return dadosPibSerie;
}
public void setDadosPibSerie(ArrayList<DadoPib> dadosPibSerie)
{
this.dadosPibSerie = dadosPibSerie;
}
}
package Modelo;
import java.io.Serializable;
import javax.persistence.*;
@Entity
public class DadoPib
implements Serializable
{
private Integer idDadoPib;
private Integer ano;
private Double valor;
private SerieDadosPib serieDadosPib;
@Id
@GeneratedValue
public Integer getIdDadoPib()
{
return idDadoPib;
}
public void setIdDadoPib(Integer idDadoPib)
{
this.idDadoPib = idDadoPib;
}
public Integer getAno()
{
return ano;
}
public void setAno(Integer ano)
{
this.ano = ano;
}
public Double getValor()
{
return valor;
}
public void setValor(Double valor)
{
this.valor = valor;
}
@ManyToOne
@JoinColumn(name="idSerieDadosPib")
public SerieDadosPib getSerieDadosPib()
{
return serieDadosPib;
}
public void setSerieDadosPib(SerieDadosPib serieDadosPib)
{
this.serieDadosPib = serieDadosPib;
}
}
package Utils;
import Modelo.DadoPib;
import Modelo.SerieDadosPib;
import java.util.ArrayList;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
public class SessaoHibernate
{
private Session session;
private Transaction transaction;
private static SessaoHibernate sessaoHibernate;
private SessaoHibernate()
{
String arquivoMdb = "C:\\Trabalho Sydney\\Software\\Fontes\\GraficoPIB\\db\\BaseDeDados.mdb";
session = new AnnotationConfiguration()
// Configurações para a conexão com o banco
.setProperty("hibernate.connection.driver_class", "sun.jdbc.odbc.JdbcOdbcDriver")
.setProperty("hibernate.connection.url", "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ="+arquivoMdb)
.setProperty("hibernate.dialect", "com.hxtt.support.hibernate.HxttAccessDialect")
// Configurações de mapeamento
.addPackage("Modelo")
.addAnnotatedClass(SerieDadosPib.class)
.addAnnotatedClass(DadoPib.class).configure().buildSessionFactory().openSession();
//session = ac.buildSessionFactory().openSession();
}
// ... o resto da classe
}
E o programa principal
public static void main(String args[])
{
SessaoHibernate sh = SessaoHibernate.getSessaoHibernate();
}