Kemas Kini JPA Data Musim Bunga @Query Tidak Mengemas kini: Dilema Flush
Apabila menggunakan anotasi @Query untuk operasi kemas kini dalam Spring Data JPA, ia adalah penting untuk memahami tingkah laku EntityManager. Secara lalai, EntityManager tidak secara automatik membuang perubahan pada pangkalan data. Ini boleh membawa kepada hasil yang tidak dijangka, di mana kemas kini kelihatan diabaikan.
Dalam kes kod yang diberikan, ujian penyepaduan gagal kerana perubahan yang dibuat pada entiti Pentadbir tidak dibuang ke pangkalan data selepas pertanyaan kemas kini . Untuk menyelesaikan isu ini, adalah disyorkan untuk menggunakan pilihan clearAutomatically = true dengan anotasi @Modifying:
@Modifying(clearAutomatically = true) @Transactional @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, ...);
Dengan menambahkan pilihan ini, EntityManager akan secara automatik mengepam perubahan selepas pertanyaan kemas kini dilaksanakan, memastikan bahawa mereka diteruskan ke pangkalan data.
Pemerhatian Tambahan:
Atas ialah kandungan terperinci Mengapa Kemas Kini JPA @Query Data Spring Saya Tidak Berfungsi: EntityManager Flush Mystery?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!