Melaksanakan MySQL "ON DUPLICATE KEY UPDATE" dengan Hibernate
Salah satu ciri berguna MySQL ialah sintaks "ON DUPLICATE KEY UPDATE" . Sintaks ini membolehkan kemas kini cekap rekod sedia ada berdasarkan kunci unik, kembali kepada sisipan apabila tiada rekod wujud. Walau bagaimanapun, menyepadukan fungsi ini dengan Hibernate boleh mencabar.
Sekatan dalam Hibernate
Penghurai HQL Hibernate melarang kata kunci khusus pangkalan data seperti "PADA KEMASKINI KUNCI DUA." Tambahan pula, Hibernate ограничивает SQL-запросы только выборочными операциями. Memanggil session.createSQLQuery("sql").executeUpdate() akan mencetuskan pengecualian. Selain itu, saveOrUpdate mungkin tidak berfungsi seperti yang diharapkan untuk kemas kini serentak.
Penyelesaian: @SQLInsert Annotation
Untuk menangani batasan ini, Hibernate menyediakan pendekatan alternatif menggunakan anotasi @SQLInsert . Anotasi ini membenarkan pembangun mentakrifkan SQL tersuai untuk operasi sisipan.
Sebagai contoh, untuk melaksanakan sintaks "KEMASKINI KUNCI PENDUPLICATE" dalam entiti Hibernate, anda boleh menggunakan anotasi berikut:
@Entity @Table(name="story_count") @SQLInsert(sql="INSERT INTO story_count(id, view_count) VALUES (?, ?) ON DUPLICATE KEY UPDATE view_count = view_count + 1" ) public class StoryCount
Anotasi ini mengarahkan Hibernate untuk menggunakan pernyataan SQL yang disediakan untuk operasi sisipan. Dengan menggunakan kaedah ini, anda boleh memanfaatkan kefungsian "KEMASKINI KUNCI DUPLICATE" dalam Hibernate.
Atas ialah kandungan terperinci Bagaimanakah saya boleh melaksanakan 'KEMASKINI KUNCI DUPLICATE' MySQL dengan Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!