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 ");
}
}
I'm getting java.lang.IllegalArgumentException: can't serialize class java.math.BigDecimal
Does anybody know what will be alernative of BigDecimal....
By going through some of the materials available on the internet, I'll try to provide a concise answer to you question.
First thing, BigDecimal is not supported natively by MongoDB so you can't use BigDecimal directly. So how to deal with it?
Well, There are alternatives.
BigDecimal value to String and store in the database. If you are using spring-data then it will be taken care of. But storing as String doesn't work as expected and might give you unexpected results on aggregation queries. Double will suffice then you can either use Double or if you want to use BigDecimal then you can write your custom converter in spring-data-mongodb, which will convert your BigDecimal to Double when storing in the database and Double to BigDecimal when reading from it. You can check this answer for an example.