Hibernación: carga perezosa uno a uno, opcional = falso

Me enfrenté al problema de quecarga perezosa uno a uno no funciona en hibernación. Heya resuelto, pero aúnno hacer correctamenteentender lo que pasa.

Mi código (la carga perezosa no funciona aquí, cuando saco Persona - La dirección también se recupera):

@Entity
public class Person{

  @Id
  @SequenceGenerator(name = "person_sequence", sequenceName = "sq_person")
  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "person_sequence")
  @Column(name = "id")
  private long personID;

  @OneToOne(mappedBy="person", cascade=CascadeType.ALL, fetch = FetchType.LAZY)
  private Adress address;
  //.. getters, setters
}

@Entity
public class Address {

  @Id
  @Column(name="id", unique=true, nullable=false)
  @GeneratedValue(generator="gen")
  @GenericGenerator(name="gen", strategy="foreign", parameters=@Parameter(name="property", value="person"))
  private long personID;

  @PrimaryKeyJoinColumn
  @OneToOne
  private FileInfo person;
}

Pero: si agregooptional=false en relación OneToOne, carga perezosafunciona bien!

@OneToOne(mappedBy="person", cascade=CascadeType.ALL, optional = false, fetch = FetchType.LAZY)
private Adress address;

Pregunta / Entreaty: por favor explícame comooptional=false Anotación ayuda a lograr la carga perezosa.

PD He leído postspost1 ypost2, y entiendo por qué OneToOne no puede ser perezoso, pero aún no puedo entenderlo.optional=false mágico.

Respuestas a la pregunta(2)

Su respuesta a la pregunta