Мы сохраняем данные в клевой БД RethinkDB
. Проблема возникла с извлечением числовых значений типа Double. Числовые поля могут иметь значения как с дробной частью, так и без нее (пример: 17, 17.0, 17.7). Внутренний формат представления чисел в RethinkDB - 64-битный double. Однако java-драйвер извлекает числа без дробной части как Long
, а число с дробной частью как Double
. При этом в классах предметной области жестко прописаны типа полей double. Когда драйвер возвращает Long вместо Double, возникает исключение ClassCastException
. Как решить эту проблему? Для инициализации каждого поля модели использовать instanceof
или написать функцию конвертации?
Можно придумать что-то лучше такого костыля?
private double convert(Object value) {
if (value instanceof Long) {
return ((Long) value).doubleValue();
}
else return (double) value;
}
Код извлечения значения:
public Optional<Invoice> find(String uid) {
Cursor cursor = r.db("test").table("invoice")
.getAll(uid).optArg("index", "uid")
.run(connection);
if (!cursor.hasNext())
return Optional.empty();
HashMap document = (HashMap) cursor.next();
Invoice result = new Invoice();
result.setSenderDateTime((String) document.get("senderDateTime"));
result.setCreateDateTime((OffsetDateTime) document.get("createDateTime"));
result.setUpdateDateTime((OffsetDateTime) document.get("updateDateTime"));
result.setUid((String) document.get("uid"));
result.setDate((String) document.get("date"));
result.setNumber((Double) document.get("number"));
result.setMarked((Boolean) document.get("marked"));
result.setPosted((Boolean) document.get("posted"));
result.setSenderCityUID((String) document.get("senderCityUID"));
return Optional.of(result);
}
Не нашел аналог JPA/JdbcTemplate для RethinkDB
Виртуальный выделенный сервер (VDS) становится отличным выбором
При попытке вытащить данные вылетает ошибка (местами обрезал ибо ограничение):
Коллеги, подскажитеОбхожу li и ставлю активный класс с увеличение scale 1
Есть задача добавляять в список дел , через promptНо я не могу выйти нормально из цикла тк innertext or text от propmt при cancel (null) возвращает значение пустой...