Kotlin مع JPA/Hibernate: مشكلة عدم وجود مُنشئ بدون معلمات (default constructor hell)
مرحبًا بالجميع! لقد كنت أكتب بلغة Kotlin لمدة نصف عام تقريبًا، وواجهت مشكلة عند استخدام JPA/Hibernate. لدي كيان بسيط:
@Entity
data class User(
@Id @GeneratedValue
val id: Long = 0,
val name: String,
val email: String
)
عند تشغيل التطبيق، يطرح Hibernate استثناءً:
org.hibernate.InstantiationException: No default constructor for entity: com.example.User
أفهم أن Hibernate يتطلب مُنشئًا بدون معلمات لإنشاء الكائنات عبر الانعكاس (reflection). لكن في Kotlin، لا تحتوي data classes على مثل هذا المُنشئ إذا لم تكن للمعلمات قيم افتراضية. حاولت إضافة @NoArg من Jackson، لكنه لم يساعد. كما سمعت عن إضافة kotlin-jpa، لكنني لست متأكدًا من كيفية تكوينها بشكل صحيح.
السؤال: كيف يمكن تنظيم كيانات JPA في Kotlin بشكل صحيح لتجنب مشكلة عدم وجود مُنشئ افتراضي؟ هل هناك طريقة قياسية؟