Problema mapeamento OneToOne

seguinte, tenho um mapeamento 1:1 entre elevador e cabina…
Fiz o mapeamento de duas formas, na primeira forma ele salva todo o elevador mas quando puxo um

elevador do banco ele nao consegue puxar a cabina junto (ela vem como null)

    //elevador.java
    @OneToOne
    @PrimaryKeyJoinColumn
    public Cabina getCabina() {
        return cabina;
    }

    //cabina.java
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="elevador")
    public Elevador getElevador() {
        return elevador;
    }

No segundo caso, consigo puxar todo o elevador, soh q quando salvo, ele salva apenas o elevador,

nao dah o insert na tabela de cabinas, sendo quando o objeto eh salvo todas as referências estao

corretas.

    //elevador.java
    @OneToOne(mappedBy="elevador")
    public Cabina getCabina() {
        return cabina;
    }

    //cabina.java
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name="elevador")
    public Elevador getElevador() {
        return elevador;
    } 

Gostaria de saber q mapeamento coloco para os dois funcionarem…

um abraço

Como dizia Jack o Estripador: vamos por partes:

para o primeiro modo funcionar e ele trazer todos os dados complete a anotacao OneToOne:

@OneToOne(cascade = CascadeType.ALL, fetch=FetchType.eager) 

ddae velho, vlw, funcionou, soh q fiz assim oh…

//elevador.java
 @OneToOne(mappedBy = "elevador", cascade = CascadeType.ALL, fetch=FetchType.EAGER) 
 @PrimaryKeyJoinColumn
 public Cabina getCabina() {
     return cabina;
 }

 //cabina.java
 @OneToOne(cascade = CascadeType.ALL)
 @JoinColumn(name="elevador")
 public Elevador getElevador() {
     return elevador;
 }

Vlw a ajuda, flw