كيفية الحفاظ على باطل لقيم رقمية عند استخدام BeanUtils.copyProperties؟

StackOverflow https://stackoverflow.com/questions/1004303

سؤال

ولدي حقل قاعدة البيانات الرقمية (الرقمية (3) في SQL Server 2000) الذي يسمح بلا قيم، وباطل هو بلدي المفضلة قيمة "لا قيمة لها".

ويتم تعيين هذا الحقل إلى غير البدائية الطبقة جافا Long في السبات:

و<property column="my_column" name="my_column" type="java.lang.Long" not-null="false" />

ويتم تعيين الحقل كما java.lang.Long في كل من بلدي شكل الدعامات والفول. عندما يتم إنشاء النموذج الدعامات أولا، لقد التحقق من أن الخاصية بإرجاع فارغة. عند إنشاء الفول (سحبت من قاعدة البيانات)، لقد التحقق من أن الخاصية بإرجاع فارغة. ومع ذلك، بعد استخدام BeanUtils.copyProperties() لتعبئتها بشكل مسبق تشكيل الدعامات مع القيم الفول، الخاصية ثم بإرجاع 0، وإذا ما زلت وحفظ شكل قاعدة البيانات سيكون لها قيمة 0.

وأنا باستخدام أنواع خاطئة أو مزيج من أنواع (في قاعدة بيانات و / أو السبات / جافا) للحفاظ على قيمة فارغة لحقل رقمي؟ يجب أن تعيين نوع SQL الرقمية لفئة Java مختلفة مثل BigDecimal؟ في البحث، لقد وجدت ذكر فئة Converter. هل أنا بحاجة لخلق مثل هذه الطبقة لمساعدة BeanUtils الحفاظ على القيم الخالية بشكل صحيح؟

هل كانت مفيدة؟

المحلول

وتحتاج إلى تسجيل LongConverter مع اغية لقيمة افتراضية في BeanUtils.

ConvertUtils.register(new LongConverter(null), Long.class); 

نصائح أخرى

في استخدام web.xml أدناه كود

<init-param>
      <param-name>convertNull</param-name>
      <param-value>true</param-value>
</init-param>

وحتى هذا يحول الافتراضي 0 لاغية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top