Problemas com inserção em hibernate OneToOne, plz preciso de ajuda

primeiramente boa tarde, estou fazendo um projeto para aprender e melhorar o meu hibernate e meu Struts, porem ainda não fiz a parte do struts, pois estou tomando uma baita surra do hibernate, meu problema é o seguinte eu tenho relacionamentos OneToOne e OneToMany, os relacionamentos OnetoMany estão funcionando numa boa + o unico OneToOne ta me dando uma boa dor de cabeça e não consigo mais achar o erro vejam as classes envolvidas

import java.util.*;

import javax.persistence.*;



@Entity
@Table(name="pessoa")
public class Pessoa {

	@OneToOne(mappedBy="pessoa")
	private Endereco endereco;
}

import javax.persistence.*;

@Entity
@Table(name="endereco")
public class Endereco {

	@OneToOne
	@JoinColumn(name="id_pessoa", nullable=true)
	private Pessoa pessoa;

}



import java.util.ArrayList;

import java.util.List;

//import org.hibernate.cfg.AnnotationConfiguration;
//import org.hibernate.cfg.Configuration;
//import org.hibernate.tool.hbm2ddl.SchemaExport;

import entity.*;

public class Main {

	public static void main(String[] args) {
		//Configuration cfg = new AnnotationConfiguration().configure("config/mysql_hibernate.cfg.xml");
		//new SchemaExport(cfg).create(true, true);
		
		Pessoa p =  new Pessoa();
		
		p.setNome("kaka");
		p.setSexo("M");
		p.setApelido("mico");

                try {
			PessoaDao pd = new PessoaDao();
			EnderecoDao ed = new EnderecoDao();
			
			pd.cadastrar(p);
			
			ed.cadastrar(er);

                        System.out.println("tudo cadastrado com sucesso");
			
		} catch (Exception e) {
			System.out.println("deu erro: " + e.getMessage());
		}
		
	}

}

o que está comentado é o codigo para geração de tabelas automaticamente pelo Hibernate;

estou tentando descobrir o pq está dando erro a horas, mas sem sucesso, plz me ajudem!!!