تعيين أعمدة PostgreSQL JSON إلى كيانات السبات
عند العمل مع قواعد بيانات PostgreSQL، من الشائع مواجهة أعمدة تخزن البيانات بتنسيق JSON. لتعيين هذه الأعمدة بشكل فعال إلى كيانات Java باستخدام السبات، من الضروري اختيار نوع البيانات المناسب.
في هذا السياق، يدور السؤال المطروح حول تعيين عمود PostgreSQL JSON إلى حقل كيان السبات. تتمثل الطريقة الشائعة في استخدام حقل سلسلة، كما هو موضح في مقتطف التعليمات البرمجية المقدم:
@Entity
public class MyEntity {
private String jsonPayload;
public MyEntity() {
}
}
ومع ذلك، يمكن أن يؤدي هذا الأسلوب إلى استثناءات عند حفظ الكيان، حيث يحاول السبات تحويل سلسلة إلى JSON.
نوع القيمة الصحيح لأعمدة JSON
لتعيين عمود PostgreSQL JSON بشكل صحيح إلى حقل كيان السبات، فكر في استخدام نوع مستخدم مخصص. من خلال إنشاء تطبيق userType، مثل StringJsonUserType، يمكنك التعامل مع التعيين بين قيم String ونوع قاعدة بيانات JSON.
إليك نموذج للتنفيذ:
public class StringJsonUserType implements UserType {
...
@Override
public int[] sqlTypes() {
return new int[] { Types.JAVA_OBJECT};
}
...
}
يمكنك بعد ذلك إضافة تعليق توضيحي لخاصية الكيان باستخدام userType المخصص:
@Type(type = "StringJsonObject")
public String getJsonPayload() {
return jsonPayload;
}
تكوين إضافي
لتنفيذ هذا الحل بالكامل، قد تحتاج إلى:
public class JsonPostgreSQLDialect extends PostgreSQL9Dialect {
...
this.registerColumnType(Types.JAVA_OBJECT, "json");
...
}
@TypeDefs({ @TypeDef( name= "StringJsonObject", typeClass = StringJsonUserType.class)})
مشروع GitHub المرجعي
لمزيد من الاستكشاف، خذ بعين الاعتبار مشروع GitHub المقدم: https://github.com/timfulmer/hibernate-postgres-jsontypeتنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3