Jdbi: لا تستخدم وسيطات التعداد ذات القيمة الخالية النوع VARCHAR

تم إنشاؤها على ١٥ يناير ٢٠١٩  ·  4تعليقات  ·  مصدر: jdbi/jdbi

أواجه مشكلة في قيم التعداد الفارغة و JDBI v3.5.1

يتم تمثيل التعداد كـ VARCHAR في قاعدة البيانات ، تمامًا مثل التمثيل الافتراضي الذي أوصت به JDBI. ومع ذلك ، إذا حاولت إدخال قيمة فارغة من خلال SqlObject ، فسيتم تعيين القيمة الخالية كنوع OTHER . يؤدي هذا إلى خطأ في النوع ، على الأقل في قاعدة بيانات Oracle.

بالنظر إلى BuiltinArgumentFactory (أو EnumArgument في المستوى الرئيسي) ، يبدو أن القيم الخالية ترتبط دائمًا بـ getUntypedNullArgument . تمكنت من التغلب على هذه المشكلة عن طريق تسجيل ArgumentFactory مخصص مثل هذا:

<strong i="13">@Override</strong>
public Optional<Argument> build(Type type, Object value, ConfigRegistry config) {
  if (value == null && GenericTypes.getErasedType(type).isEnum()) {
    return Optional.of(new NullArgument(Types.VARCHAR));
  }
  return Optional.empty();
}

هل السلوك الحالي مقصود؟ أو هل تقبل تغييرًا إلى EnumArgument يتضمن معالجة الصفري كما هو موضح في ملف. مصنع حجة مخصصة؟

bug

التعليق الأكثر فائدة

أوافق تمامًا على أنه من الأفضل تجنب استخدام قواعد بيانات Oracle (على الأقل من Java).

ومع ذلك ، فقد أجريت اختباراتي مع JDBI من HEAD مقابل قاعدة بيانات Oracle ويبدو كل شيء جيدًا!

ال 4 كومينتر

نحن نعمل بالفعل على تعداد يعالج التجديد في الوقت الحالي. سنأخذ في الاعتبار هذه المشكلة في التغييرات :)

هذا بالتأكيد خطأ ، وعادة ما نقوم بإصلاحه بشكل مستقل عن ميزة جديدة. ولكن نظرًا لأن لدينا بالفعل علاقات عامة مفتوحة تعمل على إصلاح هذا بالإضافة إلى الميزات الجديدة الأخرى ، فسنسمح لها بالاندماج.

مرحبًا rherrmann ، لقد دمجنا بعض تغييرات Enum (# 1427) ولكن ليس لدي قاعدة بيانات أوراكل شخصيًا لاختبارها. هل يمكنك إنشاء jdbi من بعد هذا التغيير والتحقق من أننا قد أصلحنا مشكلتك (ولم نكسر أي شيء آخر)؟ شكرا!

(كان علينا إزالة Oracle build والاختبارات من jdbi الرئيسي بسبب إعداد Maven السخيف المطلوب ، وعدم قدرة Oracle على استضافة برنامج تشغيل jdbc الخاص بهم بشكل موثوق)

أوافق تمامًا على أنه من الأفضل تجنب استخدام قواعد بيانات Oracle (على الأقل من Java).

ومع ذلك ، فقد أجريت اختباراتي مع JDBI من HEAD مقابل قاعدة بيانات Oracle ويبدو كل شيء جيدًا!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

buremba picture buremba  ·  5تعليقات

jarlah picture jarlah  ·  3تعليقات

bakstad picture bakstad  ·  5تعليقات

electrum picture electrum  ·  3تعليقات

keith-miller picture keith-miller  ·  3تعليقات