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.