MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB:cố gắng đọc Long từ JSON khiến java.lang.Integer không thể được truyền sang java.lang.Long

Trình điều khiển Java Mongo đã xác định rằng giá trị của serial có thể 'phù hợp' trong INT32 để nó xử lý nó như vậy. Khi bạn gọi doc.getLong() bạn đang yêu cầu trình điều khiển chuyển Integer của nó thành Long, do đó lớp truyền ngoại lệ. Ví dụ:nếu giá trị của serial2147483648 (tức là giá trị số nguyên tối đa + 1) thì trình điều khiển Mongo Java sẽ coi đó là INT64 và sau đó bạn có thể gọi doc.getLong() một cách an toàn .

Vì vậy, vì (a) bạn đã lập mô hình thuộc tính này dưới dạng Long trong mô hình lớp của bạn và (b) không phải mọi giá trị tồn tại của thuộc tính này đều yêu cầu lưu trữ dưới dạng INT64 ... bạn phải nhạy cảm với kiểu dai dẳng của nó khi chuyển nó thành Long.

Làm sao? Chà, miễn là serial thuộc tính vẫn tồn tại dưới dạng một số loại số (ví dụ:INT32 , INT64 ) thì cuộc gọi này ...

doc.get(DBConstants.SERIAL)

... sẽ luôn trả về một đối tượng là một số lớp con của java.lang.Number và do đó truyền đến Number và sử dụng longValue() sẽ hoạt động.

Ví dụ:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để kết hợp nhiều bộ sưu tập thành một bộ sưu tập bằng cách sử dụng $ lookup mongodb hoặc nodejs mongodb?

  2. Tùy chọn cấu hình thời gian chạy ClusterControl

  3. Làm cách nào để hạn chế người dùng mongo bỏ bộ sưu tập?

  4. Làm thế nào để viết một truy vấn để nhận các giá trị khác biệt từ bộ sưu tập mongodb?

  5. Nâng cấp tài liệu và / hoặc thêm tài liệu phụ