MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

MongoDB:mencoba membaca Long dari JSON menyebabkan java.lang.Integer tidak dapat dilemparkan ke java.lang.Long

Driver Mongo Java telah menentukan bahwa nilai serial dapat 'pas' dalam INT32 sehingga memperlakukannya seperti itu. Saat Anda memanggil doc.getLong() anda meminta driver untuk memberikan Integer ke Long, maka kelas memberikan pengecualian. Jika, misalnya, nilai serial tadinya 2147483648 (yaitu nilai integer maks + 1) maka driver Mongo Java akan menganggapnya sebagai INT64 dan Anda kemudian dapat dengan aman memanggil doc.getLong() .

Jadi, karena (a) Anda telah memodelkan atribut ini sebagai Long dalam model kelas Anda dan (b) tidak setiap nilai yang dipertahankan dari atribut ini memerlukan penyimpanan sebagai INT64 ... Anda harus peka terhadap tipe bertahannya saat mengubahnya menjadi Long.

Bagaimana? Nah, asalkan serial atribut dipertahankan sebagai semacam angka (mis. INT32 , INT64 ) lalu panggil ini ...

doc.get(DBConstants.SERIAL)

... akan selalu mengembalikan objek yang merupakan subkelas dari java.lang.Number dan karena itu casting ke Number dan menggunakan longValue() akan berhasil.

Misalnya:

serial = ((Number) doc.get(DBConstants.SERIAL)).longValue()



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. crosstab-query atau virtual untuk menyimpan data menggunakan luwak

  2. mongomapper geospasial 'dalam' kueri

  3. MongoDb mencari array bersarang antara dateTimes menggunakan Robomongo

  4. Permintaan bitwise enum (flags) menggunakan driver C# resmi MongoDB

  5. Cara tercepat untuk menghapus dokumen duplikat di mongodb