Menghadapi operasi pangkalan data yang lembap, anda telah mengesan isu untuk mengambil perhubungan OneToOne dengan penuh semangat dengan hierarki entiti yang mendalam, menyebabkan penyertaan berlebihan dalam pertanyaan. Malangnya, percubaan untuk membuat anotasi @OneToOne(fetch = FetchType.LAZY) atau @ManyToOne(fetch = FetchType.LAZY) telah terbukti sia-sia.
@ManyToOne(fetch = FetchType.LAZY) sepatutnya berfungsi seperti yang dimaksudkan. Semak semula untuk penggantian dalam pertanyaan HQL atau mod pengambilan API Kriteria yang boleh menggantikan anotasi kelas. Jika isu berterusan, sediakan sampel kod untuk analisis lanjut.
@OneToOne lebih bernuansa. Jika perhubungan itu tidak boleh dibatalkan, nyatakan ia seperti berikut:
@OneToOne(optional = false, fetch = FetchType.LAZY)
Untuk hubungan boleh batal, pertimbangkan pendekatan berikut:
Menambah Kunci Asing Lajur: Tambahkan lajur kunci asing pada jadual pemilik dan petakan hubungan sebagai "menyertai":
@OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "other_entity_fk") public OtherEntity getOther();
@OneToOne(mappedBy = "other") public OwnerEntity getOwner();
Walaupun pengambilan malas boleh mengurangkan masalah prestasi, teruskan dengan berhati-hati . Dalam kes dengan banyak hubungan OneToOne yang tidak sabar-sabar yang membawa kepada gabungan yang berlebihan, pertimbangkan untuk menangani masalah struktur asas dalam model data atau hubungan entiti.
Atas ialah kandungan terperinci Bagaimana untuk Menjadikan Hubungan JPA OneToOne Malas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!