@OneToMany, dúvidas

To fazendo um relacionamento @OneToMany, eu teria que mudar alguma coisa na DAO ou em outro lugar ainda pra funcionar? é um banco que possui várias agencias.
As classes são as seguintes:

[code]package Modelo;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = “dbo.Banco”)
public class Banco {
@Id
private int numeroBanco;
private String nomeBanco;
@OneToMany(targetEntity=Agencia.class ,cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = “banco”)
private List agencia;

public Banco(){
	
}

public Banco(int numeroBanco, String nomeBanco, List<Agencia> agencia) {
	this.numeroBanco = numeroBanco;
	this.nomeBanco = nomeBanco;
	this.agencia = agencia;
}

public List<Agencia> getAgencia() {
	return agencia;
}

public void setAgencia(List<Agencia> agencia) {
	this.agencia = agencia;
}

public String getNomeBanco() {
	return nomeBanco;
}
public void setNomeBanco(String nomeBanco) {
	this.nomeBanco = nomeBanco;
}

public int getNumeroBanco() {
	return numeroBanco;
}
public void setNumeroBanco(int numeroBanco) {
	this.numeroBanco = numeroBanco;
}	

}[/code]

[code]package Modelo;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = “dbo.Agencia”)
public class Agencia {
@Id
private int numeroAgencia;
private String cidade;
private String estado;
@ManyToOne()
private Banco banco;

public Agencia(){
	
}

public Agencia(int numeroAgencia, String cidade, String estado, Banco banco) {
	this.numeroAgencia = numeroAgencia;
	this.cidade = cidade;
	this.estado = estado;
	this.banco = banco;
}

public int getNumeroAgencia() {
	return numeroAgencia;
}

public void setNumeroAgencia(int numeroAgencia) {
	this.numeroAgencia = numeroAgencia;
}

public String getCidade() {
	return cidade;
}

public void setCidade(String cidade) {
	this.cidade = cidade;
}

public String getEstado() {
	return estado;
}

public void setEstado(String estado) {
	this.estado = estado;
}

public Banco getBanco() {
	return banco;
}

public void setBanco(Banco banco) {
	this.banco = banco;
}

}[/code]

[code]package Hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import Modelo.Banco;

public class HibernateBanco {
private static SessionFactory factory;

static {
	AnnotationConfiguration cfg = new AnnotationConfiguration();
	cfg.addAnnotatedClass(Banco.class);
	factory = cfg.buildSessionFactory();
}

public Session getSession() {
	return factory.openSession();
}

}
[/code]

[code]package Persistencia;

import org.hibernate.Session;

import Modelo.Banco;

public class BancoDAO {

    private Session session;

    public BancoDAO (Session session) {
    	this.session = session;
    }
    public void salva (Banco banco) {
    	this.session.beginTransaction();  
        this.session.save(banco);   
        this.session.getTransaction().commit();   
        this.session.flush();   
        this.session.close(); 
    }
    public void remove (Banco banco) {
    	this.session.beginTransaction();
    	this.session.delete(banco); 
        this.session.getTransaction().commit(); 
    	this.session.flush();
    	this.session.close();
    }
    
    public void atualiza (Banco banco) {
    	this.session.beginTransaction();
    	this.session.update(banco); 
    	this.session.getTransaction().commit();
    	this.session.flush();
    	this.session.close();
    }

}[/code]

[code]package Hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import Modelo.Agencia;

public class HibernateAgencia {
private static SessionFactory factory;

static {
	AnnotationConfiguration cfg = new AnnotationConfiguration();
	cfg.addAnnotatedClass(Agencia.class);
	factory = cfg.buildSessionFactory();
}

public Session getSession() {
	return factory.openSession();
}

}[/code]

[code]package Persistencia;

import org.hibernate.Session;
import Modelo.Agencia;

public class AgenciaDAO {
private Session session;

    public AgenciaDAO (Session session) {
    	this.session = session;
    }
    public void salva (Agencia agencia) {
    	this.session.beginTransaction();  
        this.session.save(agencia);   
        this.session.getTransaction().commit();   
        this.session.flush();   
        this.session.close(); 
    }
    public void remove (Agencia agencia) {
    	this.session.beginTransaction();
    	this.session.delete(agencia); 
        this.session.getTransaction().commit(); 
    	this.session.flush();
    	this.session.close();
    }
    
    public void atualiza (Agencia agencia) {
    	this.session.beginTransaction();
    	this.session.update(agencia); 
    	this.session.getTransaction().commit();
    	this.session.flush();
    	this.session.close();
    }[/code]

Caso eu tente executar a main ele diz que o @ManyToOne não existe relação.

Pelo que eu vi o mapeamento esta perfeito, apesar de eu nunca ter usado o aributo: targetEntity=Agencia.class.
Voce não postou sua classe main, MAS eu acredito q o erro esta acontecendo na hora de criar as tabelas.
Nunca trabalhei do modo como voce esta trabalhando, criando uma classe para gerar cada tabela do banco de dados (HibernateBanco, HibernateAgencia) .
Acredito que erro esta acontecendo pq uma tabela depende da outra não tem como o Hibernate mapear uma classe independente da outra, ou ele cria tudo o banco de dados ou ele não cria nada.
Na maneira como eu trabalho crio um arquivo Hibernate.cfg.xml e nele faço todo o mapeamento das classes que serão entidades e mando executar uma classe que gera todo o banco de dados.
Lembrando que eu utilizo anotações conforme voce apresentou no xml só informo quais são as classes entity.

Mais para a minha resposta ficar melhor aconselho voce postar a exception que esta sendo gerada e posta tambem sua classe main do projeto…

segue abaixo o Hibernate.cfg.xml e a classe que eu utilizo para gerar o banco de dados.
tenta realizar esse teste para ver se funciona.
vc entra no xml e editas as informacoes conforme indicada dentro do arquivo e manda executar a classe GerarTabelas

Espero que eu tenha tirado as suas dúvidas.

Valeu abraço !!!

Tenta assim:

@OneToMany(targetEntity=Agencia.class ,cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "banco",orphanRemoval=true)

Pq não coloca td numa classe só?

public class HibernateUtil {

	private static SessionFactory factory;

	static {
		AnnotationConfiguration cfg = new AnnotationConfiguration();
		cfg.addAnnotatedClass(Banco.class);
		cfg.addAnnotatedClass(Agencia.class);
		factory = cfg.buildSessionFactory();
	}

	public Session getSession() {
		return factory.openSession();
	}
}

[quote=Guevara]Tenta assim:

@OneToMany(targetEntity=Agencia.class ,cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "banco",orphanRemoval=true)

Pq não coloca td numa classe só?

[code]
public class HibernateUtil {

private static SessionFactory factory;

static {
	AnnotationConfiguration cfg = new AnnotationConfiguration();
	cfg.addAnnotatedClass(Banco.class);
	cfg.addAnnotatedClass(Agencia.class);
	factory = cfg.buildSessionFactory();
}

public Session getSession() {
	return factory.openSession();
}

}
[/code][/quote]

Eu não sabia que funcionava assim.
Uma outra dúvida que eu tenho, na Main, como que eu faço por exemplo pra instanciar o Banco sendo que tem uma list de Agencia no argumento?

Veja este link, ele mostra como instanciar as classes na Main e depois persistir.
http://www.hiberbook.com/HiberBookWeb/learn.jsp?tutorial=18mappingonetomanyassociations