Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

77
Vistas
No puedo obtener datos de mongoDB mientras uso BigDecimal dentro de la consulta
 BigDecimal log_max=new BigDecimal(21.11617279052734); BigDecimal log_min=new BigDecimal(21.01617279052734); BigDecimal lat_max=new BigDecimal(61.43435454343454); BigDecimal lat_min=new BigDecimal(61.03435454343454); String col_name="latitude"; String col_name2="longitude"; List<BasicDBObject> criteria=new ArrayList<BasicDBObject>(); BasicDBObject searchQuery1 =new BasicDBObject(col_name, new BasicDBObject("$gte", lat_min).append("$lte", lat_max)); criteria.add(searchQuery1); BasicDBObject searchQuery2=new BasicDBObject(col_name2, new BasicDBObject("$gte", log_min).append("$lte", log_max)); criteria.add(searchQuery2); DBCursor cursor = coll.find(query); while (cursor.hasNext()) { DBObject cursorObj = cursor.next(); LOGGER.info("Collection successf"); Object temp1 = cursorObj.get("longitude"); BigDecimal longitude = new BigDecimal(temp1.toString()); System.out.println("longitude ::::"+longitude); Object temp2 =cursorObj.get("latitude"); BigDecimal latitude = new BigDecimal(temp2.toString()); LOGGER.info("done getting "); } }

Recibo java.lang.IllegalArgumentException: no se puede serializar la clase java.math.BigDecimal

¿Alguien sabe cuál será la alternativa de BigDecimal...?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Revisando algunos de los materiales disponibles en Internet, intentaré proporcionar una respuesta concisa a su pregunta.

En primer lugar, BigDecimal no es compatible de forma nativa con MongoDB, por lo que no puede usar BigDecimal directamente. Entonces, ¿cómo lidiar con eso?

Bueno, hay alternativas.

  1. Convierta su valor BigDecimal a String y guárdelo en la base de datos. Si está utilizando spring-data se solucionará. Pero el almacenamiento como String no funciona como se esperaba y puede generar resultados inesperados en las consultas de agregación.
  2. Si cree que usar Double será suficiente, puede usar Double o si desea usar BigDecimal , puede escribir su convertidor personalizado en spring-data-mongodb , que convertirá su BigDecimal a Double cuando se almacene en la base de datos y Double a BigDecimal al leer de él. Puede consultar esta respuesta para ver un ejemplo.
  3. Puede escribir su tipo personalizado y usarlo. Puedes comprobar esto y esto .
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda