JPA OneToOne bidireccional.

Tengo dos clases de entidades que están en relación @OneToOne. El código de ejemplo es el siguiente:

public class A {
@Id
private int id;
private String name;
@JoinColumn(name = "B_ID", referencedColumnName = "id")
@OneToOne(cascade=CascadeType.ALL)
private B b;

//setters and getters

}

public class B {
@Id
private int id;
private String name;
@OneToOne(mappedBy="b")
    private A a;
//setter and getters

}

mi pregunta aquí es "¿Puedo usar el método setA (A a) en la clase B. Me refiero a esto?

em.getTransaction().begin();
A aa = new A();
aa.setId(1);
aa.setName("JJ");
em.persist(aa);

B bb = new B();
bb.setId(1);
bb.setName("CC");
bb.setA(aa);
em.persist(bb);
em.getTransaction().commit();

Cuando intenté esto, el campo foreign_key en la tabla A (B_ID) se guardó como nulo.
Por favor, ayúdame.

Respuestas a la pregunta(3)

Su respuesta a la pregunta