Mam do czynienia z problemem, że jeden do jednego leniwy ładowanie nie działa w hibernacji. Mam już rozwiązany , ale nadal nie prawidłowo zrozumieć co się stanie.Hibernate: jeden do jednego leniwy ładowanie, opcjonalnie = fałsz
Mój kod (leniwy załadunku nie działa tutaj, kiedy pociągnąć Person - Adres jest naciągane):
@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", [email protected](name="property", value="person"))
private long personID;
@PrimaryKeyJoinColumn
@OneToOne
private FileInfo person;
}
Ale: jeśli dodam optional=false
w relacji OneToOne, leniwy ładowanie działa dobrze!
@OneToOne(mappedBy="person", cascade=CascadeType.ALL, optional = false, fetch = FetchType.LAZY)
private Adress address;
Pytanie/Entreaty: proszę mi wyjaśnić jak optional=false
adnotacja pomaga osiągnąć leniwy załadunku.
P.S. Czytałem posty post1 i post2 i rozumiem, dlaczego prosty OneToOne nie może być leniwy, ale nadal nie mogę uchwycić magii optional=false
.
Hej, Wołodymyr, mam z tobą ten sam problem. Próbuję oddzielić kolumnę BLOB od jednostki. Jednostka nadrzędna ma obiekt podrzędny. Element potomny zawiera kolumnę binarną. Rodzic i dziecko to "ten sam stół", więc używam relacji @OneToOne. Chociaż użyłem LAZY fetchType, ale wygląda na to, że nie działa. Kiedy wstawiam 'opcjonalny = fałsz', to działa. Wszelkie wyjaśnienia zostaną docenione naprawdę. – Emerald214
@ Emerald214 Przepraszam, to było 2 lata temu.Obecnie piszę JS Mobile i nie mogę ci pomóc –
OneToOne opcjonalne = false nie działa z CascadeType.PERSIST zobacz: https://hibernate.atlassian.net/browse/HHH-9670 – sliver