Re:Exception Hibernate 1:n

Boa Tarde Victor , bem estou comecando a estudar hibernate e fiz um exemplo parecido com o seu, que aki comigo funcionou muito bem :[code]Session session = new HibernateFactory().getSession();
Transaction tx = session.beginTransaction();

Empresa empresa = new Empresa();
LocalEmpresa localEmpresa = new LocalEmpresa();

empresa.setCnpj(“1”);
localEmpresa.setCnpj(empresa);
localEmpresa.setCountry_code(“BR”);

session.save(empresa);
session.save(localEmpresa);

tx.commit();[/code]

Entaw coloca suas classes aih, p/ ver qual eh o problema, pois estou comecando a mexer com hibernate.

Pela exception, br.com.serasa.bean.Empresa.cnpj não tem um getter.

Pessoal, RESOLVI a questão:

Faltava citar no hibernate.cfg o mapeamento de Setor.

Me perdoem por este post!

Atenciosamente,

[quote]Pessoal,

Estou com o mesmo problema, mas não estou conseguindo resolver!

Classe Empresa

@Entity
@Table(name = "empresa")
public class Empresa implements java.io.Serializable {
    @Id
    @SequenceGenerator(name = "ID_Empresa")
    @Column(name = "ID_Empresa")
    private int id;
    
    @Column(name = "Nome")
    private String nome;
    
    @OneToMany(mappedBy = "empresa", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private Collection<Setor> setores;[/code]

Classe Setor
[code]@Entity
@Table(name = "setor")
public class Setor implements java.io.Serializable {
    @Id
    @SequenceGenerator(name = "ID_Setor")
    @Column(name = "ID_Setor")
    private int id;
    
    @Column(name = "Nome")
    private String nome;
    
    @ManyToOne 
    @JoinColumn(name = "ID_Empresa", nullable = false, updatable = true)
    private Empresa empresa;[/code]

Erro:
[code]Exception in thread "main" java.lang.ExceptionInInitializerError
        at br.com.quality.util.HibernateUtil.<clinit>(HibernateUtil.java:32)
        at br.com.quality.dominio.teste.HibernateTeste.main(HibernateTeste.java:33)
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: br.com.quality.dominio.Empresa.setores[br.com.quality.dominio.Setor]
        at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:979)
        at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:530)
        at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:471)
        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:296)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
        at br.com.quality.util.HibernateUtil.<clinit>(HibernateUtil.java:26)
        ... 1 more

O que está de diferente?[/quote]

tem necessidade de vc mapear de novo o objeto empresa dentro da classe setor?
mapeie somente em um

Boa tarde!
Estou tentando inserir dois objetos no banco Empresa e Localidade! Cada empresa tem N localidades (relacionamento 1:n)! O código é mais ou menos esse ae:

[code]
Session session = new HibernateFactory().getSession();
Transaction tx = session.beginTransaction();
Empresa empresa = new Empresa();
empresa.setCnpj(“1”);
session.save(empresa);

LocalEmpresa localEmpresa = new LocalEmpresa();
localEmpresa.setCnpj(empresa.getCnpj());
localEmpresa.setCountry_code(“BR”);
session.save(localEmpresa);

tx.commit();[/code]

Recebo a seguinte exception:

Aparentemente ele nao salva empresa para depois validar a chave estrangeira em localidade!
Alguém já recebeu esse exception?!
Value!

Oi Eduardo!
Vc está usando relacionamento 1:n?!
Tenho a impressão que estou usando errado o @ManyToOne e @OneToMany!!!
Valeu!

Bom dia!
A declaração das minhas classes “abreviadamente” está assim:

[code]@Entity
public class Empresa {
@Id
private String cnpj;
@OneToMany (mappedBy = “cnpj”)
private List lista = new ArrayList();
public String getCnpj() {
return cnpj;
}
public void setCnpj(String cnpj) {
this.cnpj = cnpj;
}
public List getLista() {
return lista;
}
public void setLista(List lista) {
this.lista = lista;
}

}[/code]

@Entity
public class LocalEmpresa {
	@Id @GeneratedValue
	private Long idLocalEmpresa;
	@ManyToOne (targetEntity=Empresa.class)
	@JoinColumn(name="cnpj")
	private String cnpj;
                //outros campos e getters and setters

Caramba! Funcionou!
Tive que mudar o seguinte:
Na classe Empresa:

@OneToMany (cascade = {CascadeType.ALL},
	     mappedBy = "empresa")

Na classe Local:

@ManyToOne (targetEntity=br.com.serasa.bean.Empresa.class)
@JoinColumn(name="cnpj", nullable=false)
private Empresa empresa;

Fica ae registrado! Valeu!