OneToOne Unidirecional

Meu problema e o seguinte tenho uma classe pessoa que eu generalizo para a classe instituicao, aluno, professor e outras, porem no momento estou com problemas na classe instituicao pois estou implementando um cadastro em jsf + ejb + jpa2 com eclipslink.

Segue abaixo as minhas classes enxugadas

[code]
@Entity
@Table(name = “pessoa”)
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = “pes_tipo”, discriminatorType = DiscriminatorType.STRING, length = 1)
@DiscriminatorValue(“0”)
public class Pessoa implements Serializable {

private static final long serialVersionUID = 1;

@Id
@Column(name = "pes_codigo")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idPessoa;

@Column(name = "pes_tipo")
private String tipo;

@OneToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)    
@PrimaryKeyJoinColumn(name="pes_codigo")
Endereco endereco;

//get sets
}[/code]

[code]
@Entity
@Table(name = “endereco”)
public class Endereco implements Serializable {

private static final long serialVersionUID = 1;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "end_codigo")
private Integer idEndereco;

@Column(name = "end_numero")
private int numero;

@Column(name = "end_complemento")
private String complemento;

@OneToOne(mappedBy="endereco", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@JoinColumn(name="pes_codigo", insertable=true, updatable=true, nullable=false)
private Pessoa pessoa;

//get sets
}[/code]

[code]@Entity
@Table(name=“instituicao”)
@PrimaryKeyJoinColumn(name=“pes_codigo”)
@DiscriminatorValue(“I”)
public class Instituicao extends Pessoa{

@Column(name="ins_cnpj")
private String cnpj;

@Column(name="ins_razao_social")
private String razaoSocial;

@Column(name="ins_inscricao_estadual")
private String inscricaoEstadual;

}[/code]

Eu retirei alguns atributos das classes para ficar mais facil de ler o codigo.
Como voces podem ver existe uma classe insitituicao que herda de pessoa e a classe pessoa tem uma associacoa OneToOne para a classe Endereco.
Logo abaixo eu exportei as tabelas do banco de dados MySQL para que voces cosigam ter uma breve nocao de como estao as tabelas

[code]
CREATE TABLE endereco (
end_codigo int(11) NOT NULL AUTO_INCREMENT,
end_numero int(11) NOT NULL,
end_complemento varchar(255) NOT NULL,
log_codigo int(11) NOT NULL,
pes_codigo int(11) DEFAULT NULL,
PRIMARY KEY (end_codigo),
KEY FK_ENDERECO_LOGRADOURO (log_codigo),
KEY FK672D67C9FF00390 (pes_codigo),
KEY FK672D67C9AEE113F7 (log_codigo),
CONSTRAINT FK_ENDERECO_LOGRADOURO FOREIGN KEY (log_codigo) REFERENCES logradouro (log_codigo) ON UPDATE CASCADE,
CONSTRAINT FK_ENDERECO_PESSOA FOREIGN KEY (pes_codigo) REFERENCES pessoa (pes_codigo) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

CREATE TABLE pessoa (
pes_codigo int(11) NOT NULL AUTO_INCREMENT,
pes_nome varchar(50) NOT NULL,
pes_telefone varchar(15) DEFAULT NULL,
pes_email varchar(100) DEFAULT NULL,
pes_login varchar(50) NOT NULL,
pes_senha varchar(20) NOT NULL,
pes_bloqueado varchar(1) NOT NULL DEFAULT ‘N’,
PRIMARY KEY (pes_codigo)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;

CREATE TABLE instituicao (
pes_codigo int(11) NOT NULL,
ins_razao_social varchar(100) NOT NULL,
ins_cnpj varchar(14) NOT NULL,
ins_inscricao_estadual varchar(20) NOT NULL,
PRIMARY KEY (pes_codigo),
KEY PK_EMPRESA (pes_codigo),
CONSTRAINT FK_INSTITUICAO_PESSOA FOREIGN KEY (pes_codigo) REFERENCES pessoa (pes_codigo) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;[/code]

O meu grande problema esta na hora de salvar a Instituicao pois o JPA insere tudo na tabela instituicao, pessoa, e na tabela endereco fica faltando fazer o relacionamento com pessoa ou seja o campo pes_codigo fica vazio.
Ja fiz de tudo quanto e anotacao possivel nessas entidades e nao consegui fazer salvar, alguem aqui poderia me dar uma luz no fim do tunel…???
A ultima tentativa foi inserir primeiro instituicao sem endereco e depois alterar o objeto com a instituicao ja com o idPessoa criado e altera-la e mesmo assim nao houve sucesso algum continuei sem ver o pes_codigo dentro da tabela endereco.
Alguem pode me ajudar urgente com esse problema…