Relacionamento One-To-One - Hibernate

Estou com problemas no relacionamento One-To-One, achei alguns tópicos mas poucos usando annotations.E os que tinham não conseguiram solucionar minha dúvida.
Inclusive consegui a documentação do hibernate em portugues com vários exemplos de relacionamentos só que usando xml…

Minha dúvida acho que é meio básica, mas vamos lá:

Tenho um Usuário só que como são muitos dados, resolvi separar o cadastro em 2, Ficando uma classe Usuario e outra classe Complemento.
Só que na hora que cadastrasse o Usuário já queria vincular ele ao seu Complemento.Pelo que andei lendo seria um relacionamento 1:1

Portanto o código ficaria assim:

Usuario

@Entity
public class Usuario implements java.io.Serializable {
    
    @Id
    @GeneratedValue
    private Long id;
    
    @OneToOne(cascade=CascadeType.PERSIST)
    @JoinColumn
    private Complemento complemento;

//getter's and setter's e outros campos

Complemento

@Entity
public class Complemento implements java.io.Serializable {
    
    @EmbeddedId //Vi isso em outro tópico aqui do GUJ para herdar FK de outra classe, preciso disso?
    private Usuario id;

//getter's and setter's e outros campos

Dá esse erro:

http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/

Vendo a documentação fiz algumas alterações aqui, mas ta dando uns erros como eu resolvo?
É para as duas classes compartilharem a mesma id.

Usuario

@Entity
public class Usuario implements java.io.Serializable {
    
    @Id
    @GeneratedValue
    private Long id;

    @OneToOne(cascade=CascadeType.ALL)
 [b]   @PrimaryKeyJoinColumn[/b]
    private Complemento complemento;
@Entity
public class Complemento implements java.io.Serializable {
        
//Complemento
    
    @Id
    private Long id;

Então no formulário na hora de gravar um usuário, estou fazendo assim:

Quando são dados da classe Usuario:

Está funcionando tudo certo, só que para inserir no complemento tentei fazer o seguinte:

Só que está dando esse erro, o que eu posso fazer?

Cara, interprete a mensagem, o que você entendeu dela?

Leia essa parte: http://www.hibernate.org/hib_docs/annotations/reference/en/html/entity.html#entity-mapping-identifier

Ok, vou dar uma olhada…

Não consigo fazer funcionar herdando a chave primária do usuário :shock:

Fiz de um método que com certeza vai me dar problemas futuramente

As tabelas usuario e complemento com o campo id auto_incremento
E as id’s com @GeneratedValue

Assim funcionou, só que queria de fazer uma maneira melhor, só que não consigo, por mais que eu leia a documentação não entendo nada.

Também olhei outros tutoriais em portugues:
http://www.j2eebrasil.com.br/mostrar/12
http://www.jeebrasil.com.br/mostrar/14

Olhei vários tópicos do GUJ, mas nada da certo.

javax.servlet.ServletException: ids for this class must be manually assigned before calling save(): package.Complemento

O erro diz que o id de complemento deve ser assinado manualmente antes de chamar o save()

Eu acho que deve ser alguma annotation na id da classe Complemento, mas não sei qual delas usar, estou totalmente perdido, vou continuar lendo já que ninguém se dispõe a ajudar