У меня проблема с использованием JAXB в Scala для маршалинга и демаршаллинга (и целых чисел в этом отношении).
В моем приложении Scala есть переменные, подобные этой:
val taxPaid: Option[Float]
Если taxPaid равен 0.0f
, это означает, что налог не уплачивается; если taxPaid равен None
, то это означает, что мы не знаем, сколько было уплачено налога.
Переменная типа Option[Float]
отлично отображается в столбце SQL float NULL
(я использую Squeryl), и в равной степени она может быть хорошо выражена в JSON или XML. У меня проблема с JAXB - чтобы заставить JAXB работать, в моих представлениях POJO я должен использовать простую Java Floats
, например:
@XmlElement(nillable = true, `type` = classOf[Object])
@BeanProperty
var taxPaid: Float = _
И затем, поскольку Java Float
не может принимать значение null
, значение 0.0f
рассматривается как (неверный и с потерями) прокси для null
.
Итак, мой вопрос: есть ли способ, которым я могу маршалировать и демаршировать XML-плавающие в Scala Option[Float]
, и таким образом сохранять значение null
?