Hibernate Annotations

gostaria que se alguem pudesse me ajudar!!
É o seguinte estou com problemas de mapeamento de foreikng key!

A baixo vou mostrar as classes que estou usando ve se vcs me ajudem por favor!!

ESSA PRIMEIRA CLASSE ABAIXO É A CLASSE ONDE SE ENCONTRA A CHAVE ESTRANGEIRA QUE REFERENCIA UMA OUTRA CLASSE QUE VOU MOSTRAR A SEGUIR, ESSA E A CLASSE QUE TEM TODO O MAPEAMENTO EM ANNOTETIONS!

package br.uninorte.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

public class Cliente {

@Id	
@Column
public Long cpf;

@Column(name = "clinome")
public String nome;

@Column(name = "clirendamensal")
public Long rendamensal;

@Column(name = "clifone")
public String fone;

@SuppressWarnings("unused")
@ManyToOne
@JoinColumn(name = "clibaicodigo", nullable=false, updatable=false, insertable=false)
private Bairro codigo;


public Bairro getCodigo() {
	return codigo;
}

public void setCodigo(Bairro codigo) {
	this.codigo = codigo;
}

public Long getCpf() {
	return cpf;
}

public void setCpf(Long cpf) {
this.cpf = cpf;
}

public String getFone() {
	return fone;
}

public void setFone(String fone) {
	this.fone = fone;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

public Long getRendamensal() {
	return rendamensal;
}

public void setRendamensal(Long rendamensal) {
	this.rendamensal = rendamensal;
}

}

ESSA PROXIMA CLASSE E ONDE ESTA A CHAVE QUE VAI SER REFERENCIADA DA CLASSE ANTERIOR!

package br.uninorte.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name=“bairro”)
public class Bairro {

public Bairro(){
	
}

@Id
@GeneratedValue
@Column(name = "baicodigo")
public Long codigo;

@Column(name = "bainome")
public String nome;

public Long getCodigo() {
	return codigo;
}

public void setCodigo(Long codigo) {
	this.codigo = codigo;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}	

}

ESSA CLASSE E ONDE ESTA O METODO DE INSERIR,REMOVER, PESQUISAR, LISTAR E ALTERAR, EU JA CONSIGO FAZER ESSES METODOS NAS DEMAIS CLASSES QUE NAO TEM CHAVE ESTRANGEIRA, ENTAO LOGO ESSES METODOS ESTAO CERTO!

package br.uninorte.controlador;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import br.uninorte.conexao.ConexaoBD;
import br.uninorte.model.Cliente;

public class ControladorCliente {

public void alterar(Cliente cliente) {
	// TODO Auto-generated method stub
	Session session = null;
Transaction tx = null;
	
	try {
		
		session = ConexaoBD.getInstance();
		tx = session.beginTransaction();
		session.update(cliente);
		tx.commit();
	} catch (Exception e){
		tx.rollback();
		e.printStackTrace();
} finally {
	session.close();
	}
}

//salvar os clientes
public void inserir(Cliente cliente)  {
	//o OBJETO acima vem apartir da classe MODEL
	// TODO Auto-generated method stub
	Session session = null;
	Transaction tx = null;

	try {
		
		session = ConexaoBD.getInstance();
		tx = session.beginTransaction();
		session.save(cliente);
		tx.commit();
	} catch (Exception e){
		tx.rollback();
		e.printStackTrace();
	} finally {
		//session.close();
	}
	
}

public List listar() {
	// TODO Auto-generated method stub
	List result;
	
	Session session = ConexaoBD.getInstance();
	
	Query q = session.createQuery(" from Clientes");
	
	result = q.list();
	
session.close();
	return result;
}

public List listarPorNome(String clinome) {
	// TODO Auto-generated method stub
	List result = null;
	
	Session session = ConexaoBD.getInstance();
	
	Query q = session.createQuery(" from Cliente where nome like :parametro");
	q.setParameter("parametro",clinome);
	
	result = q.list();
	
	//session.close();
	return result;
}

public Cliente procurarPorId(Long cpf)  {

// TODO Auto-generated method stub

	Cliente result = null;
	
	Session session = ConexaoBD.getInstance();
	result = (Cliente) session.get(Cliente.class, cpf);
	if (result == null) {
		System.out.println("não encontrou!!!");
	}

// session.close();
return result;
}

public void remover(Cliente cliente)  {
	// TODO Auto-generated method stub
	Session session = null;
	Transaction tx = null;
	
	try {
		session = ConexaoBD.getInstance();
		tx = session.beginTransaction();
		session.delete(cliente);
	tx.commit();
	} catch (Exception e){
	tx.rollback();
		e.printStackTrace();} 
	finally {
	session.close();
	}
}

}

E AGORA A CLASSE QUE FAZ O TESTE SE ESTA TUDO CERTO!

package br.uninorte.aplicacao;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Iterator;
import java.util.List;

import br.uninorte.controlador.ControladorBairro;
import br.uninorte.controlador.ControladorCliente;
import br.uninorte.model.Cliente;

public class Apli_Cliente {

/**
 * @param args
 */
public static void main(String[] args ) throws IOException {
	// TODO Auto-generated method stub
	ControladorCliente controladorCliente = new ControladorCliente();
	Cliente cliente = new Cliente();
    //Cliente cliente;
	String s;
	BufferedReader dado = new BufferedReader(new InputStreamReader(System.in));;
	int op=0;


	while (op!=3){
		System.out.println("    MENU");
		System.out.println("1 - INCLUIR CLIENTE");
		System.out.println("2 - LISTAR CLIENTE");
		System.out.println("3 - LISTAR POR CPF DO CLIENTE");
		System.out.println("4 - SAIR");		
		System.out.println("Informe sua opção: ");
		s = dado.readLine();
		op = Integer.parseInt (s);					
		while ((op<1) || (op>4)){
			System.out.println("Opção Inválida. Informe 1 ou 2 ou 3 ou 4.");
			s = dado.readLine();
			op = Integer.parseInt (s);
		}
		
//		incluir (OK)
		if (op ==1){
			String nome, cpf, rendamensal,fone,codigobairro;
			ControladorBairro controladorBairro = new ControladorBairro();
			
			System.out.println("Informe o nome do cliente: ");
			nome = dado.readLine();
			System.out.println("Informe o cpf do cliente: ");
			cpf = dado.readLine();
			System.out.println("Informe a Renda Mensal do cliente: ");
			rendamensal = dado.readLine();
			System.out.println("Informe o telefone do cliente: ");
			fone = dado.readLine();
			System.out.println("Informe o codigo do bairro onde o cliente mora: ");
			codigobairro = dado.readLine();
			cliente.setNome(nome);
			cliente.setCpf(Long.parseLong(cpf));
			cliente.setRendamensal(Long.parseLong(rendamensal));
			cliente.setFone(fone);
			cliente.setCodigo(controladorBairro.procurarPorId((Long.parseLong(codigobairro))));
			
			try {
				controladorCliente.inserir(cliente);
				System.out.println("Cliente Cadastrado com Sucesso!!!");
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("Erro ao Cadastrar!!!");
			}
		}
		if (op ==2) {
			// listar clientes
			String nome;
			System.out.println("Informe o nome ou parte do nome que deseja consultar: \n");
			nome = dado.readLine();				
			List lista = controladorCliente.listarPorNome("%"+nome+"%");
			Iterator iterator = lista.iterator();
			
			while (iterator.hasNext()) {
				Cliente c = (Cliente) iterator.next();
				System.out.println("Cliente: " + c.getCpf()+" - " + c.getNome());
			}
		}
		
		if (op ==3) {
			// listar Funcionario por ID
			
			String cpf;
			System.out.println("Informe o cpf que deseja consultar: \n");
			cpf = dado.readLine();	
			cliente.setCpf(Long.parseLong(cpf));
			controladorCliente.procurarPorId(Long.parseLong(cpf));
			
				System.out.println("Bairro: " + cpf);
				System.out.println("Bairro Encontrado com Sucesso!!!");
	}
	
			try {
			
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
				System.out.println("Erro ao Procurar!!!");
			}
	
		
	}
}

}

POR FAVOR ME AJUDEM URGENTEMENTE!!!

Boa tarde, dei uma olhada rapida em seu codigo e parece que esta faltando alguns atributos em suas annotations para mapear sua entidade como por exemplo:mappedBy=“entity”

Leia o artigo disponibilizado no seguinte endereço quem sabe possa lhe ajudar:

http://www.devmedia.com.br/articles/viewcomp.asp?comp=6628

Abs

vou dar uma olhada!!
obridago!