سؤال

لدي تطبيق ربيع يعمل ضد قاعدة بيانات MySQL. لدي جدول مبيعات مثل:

+-------------------+------------------------------+------+-----+---------+-------+
| Field             | Type                         | Null | Key | Default | Extra |
+-------------------+------------------------------+------+-----+---------+-------+
| Price             | decimal(19,4)                | NO   |     | NULL    |       |
| ItemId            | int(10) unsigned             | NO   |     | NULL    |       |
+-------------------+------------------------------+------+-----+---------+-------+

في فئة الربيع الخاصة بي، لدي ما يلي:

long price = getSimpleJdbcTemplate().queryForLong("SELECT price FROM sales WHERE itemID = :itemID", params);
logger.info("price: " + price + ");

ومع ذلك، فإن هذا يعود سعر 1، حتى لو كان هذا الاستعلام مباشرة على قاعدة البيانات إرجاع 0.8500. وبعد كيف يمكنني تجنب هذه الخسارة الدقة من العشرية في قاعدة البيانات إلى الطويلة في التعليمات البرمجية الخاصة بي؟

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

المحلول

long لا يدعم الأماكن العشرية لأنه نوع صحيح. هل جربت queryForObject(sql, BigDecimal.class, params)?

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