У меня есть метод с таким телом:
try {
val query = "SELECT decimalValue as decimal_value FROM table";
val con = new DbConnection
val statement = con.preparedStatement(query)
val rset = statement.executeQuery()
var myDecimalValue = 0
if (rset.next()) {
myDecimalValue = rset.getBigDecimal("decimal_value")
}
}
catch {
case e: Exception => println(e.getMessage)
}
Если результат запроса равен нулю, я получаю исключение: null value for BigDecimal
но из метода getBigDecimal
of ResultSet.java
Я нашел это определение:
* @return the column value (full precision);
* if the value is SQL <code>NULL</code>, the value returned is
* <code>null</code> in the Java programming language.
Как этого избежать? Мне действительно нужно объявить мой параметр как вариант, подобный этому (ниже), если я знаю, что результат может содержать нулевые значения?!:
var myDecimalValue: Option[BigDecimal] = Option(BigDecimal(0))
и внутри, если:
val rsetValue = rset.getBigDecimal("decimal_value")
if (rsetValue != null) myDecimalValue = Option(rsetValue)
обновить : stracktrace
java.lang.IllegalArgumentException: null value for BigDecimal
at scala.math.BigDecimal.<init>(BigDecimal.scala:405)
at scala.math.BigDecimal$.apply(BigDecimal.scala:333)
at scala.math.BigDecimal$.apply(BigDecimal.scala:330)
at scala.math.BigDecimal$.javaBigDecimal2bigDecimal(BigDecimal.scala:345)
at ...
at ...
at ...
at java.lang.Thread.run(Thread.java:748)