Rumah  >  Artikel  >  Java  >  Mengapakah Spring Data JPA @Query Update Tidak Mencerminkan dalam Pangkalan Data?

Mengapakah Spring Data JPA @Query Update Tidak Mencerminkan dalam Pangkalan Data?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-25 12:34:30259semak imbas

Why is my Spring Data JPA @Query Update Not Reflecting in the Database?

Kemas Kini JPA Data Musim Bunga @Pertanyaan tidak Mengemas kini?

Dalam JPA Data Musim Bunga, anotasi @Query membolehkan anda mentakrifkan JPQL tersuai atau asli Pertanyaan SQL untuk mengubah suai baris pangkalan data. Walau bagaimanapun, anotasi @Modifying sahaja mungkin tidak mencetuskan operasi curahan dan kegigihan yang diperlukan untuk mengemas kini pangkalan data.

Untuk memastikan perubahan berterusan pada pangkalan data, adalah disyorkan untuk menggunakan atribut clearAutomatically dalam anotasi @Modifying. Atribut ini menentukan sama ada konteks kegigihan dikosongkan secara automatik selepas pelaksanaan pertanyaan. Dengan menetapkan clearAutomatically kepada benar, perubahan yang dibuat semasa pelaksanaan pertanyaan dikesan secara automatik dan dipadamkan ke pangkalan data.

Berikut ialah contoh cara anda boleh menggunakan clearAutomatically dalam pertanyaan @Modifying anda:

@Modifying(clearAutomatically = true)
@Query("UPDATE Admin SET firstname = :firstname, lastname = :lastname, login = :login, superAdmin = :superAdmin, preferenceAdmin = :preferenceAdmin, address =  :address, zipCode = :zipCode, city = :city, country = :country, email = :email, profile = :profile, postLoginUrl = :postLoginUrl WHERE id = :id")
public void update(@Param("firstname") String firstname, @Param("lastname") String lastname, @Param("login") String login, @Param("superAdmin") boolean superAdmin, @Param("preferenceAdmin") boolean preferenceAdmin, @Param("address") String address, @Param("zipCode") String zipCode, @Param("city") String city, @Param("country") String country, @Param("email") String email, @Param("profile") String profile, @Param("postLoginUrl") String postLoginUrl, @Param("id") Long id);

Dengan menetapkan clearAutomatically kepada benar, konteks kegigihan dikosongkan selepas pelaksanaan pertanyaan kemas kini. Ini memaksa perubahan yang dibuat pada objek Pentadbir diteruskan ke pangkalan data.

Ingat bahawa clearAutomatically hanya mempengaruhi konteks kegigihan yang dikaitkan dengan EntityManager semasa. Jika anda menggunakan berbilang konteks kegigihan, anda mungkin perlu mengurus pembilasan secara manual untuk memastikan perubahan disegerakkan dengan betul merentas kesemuanya.

Atas ialah kandungan terperinci Mengapakah Spring Data JPA @Query Update Tidak Mencerminkan dalam Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn