В настоящее время у нас есть язык запросов типа «безопасный», этот пользовательский DSL позволяет нам легко писать запросы к базе данных, которые интерпретируются и преобразуются в запросы Mongo.MongoDB Драйвер Scala - визуализация документов BSON
Недавно мы перешли из Касбаха в новый драйвер Mongo Scala и переписали наш переводчик. Однако у меня возникают некоторые проблемы при работе с необязательными значениями.
Это пример запрос:
dao.headOption(Order.id === orderId.some)
типа, хранящийся на объекте заказа является вариантом, поэтому мы приподнять при условии идентификатора в качестве опции, а также. Однако всякий раз, когда я пытаюсь сделать из сгенерированного запроса для отладки, а также для тестов в следующем порядке:
import org.mongodb.scala.bson.{BsonDocument, codecs}
query.toBsonDocument(BsonDocument.getClass, codecs.DEFAULT_CODEC_REGISTRY)
следующее исключение заканчивается бросают:
Can't find a codec for class scala.Some.
org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class scala.Some.
Я не знаю, как исправить это, или если мне нужно реализовать собственный кодек для параметров, и если я это сделаю, я не знаю, как это сделать.
Любая помощь будет с радостью оценена. Спасибо заранее
Update
Я видел, что я могу попробовать и реализовать Codec интерфейс, как показано здесь:
http://mongodb.github.io/mongo-java-driver/3.0/bson/codecs/
Я бы нужно реализовать для каждого возможного подтип варианта?
Пример Опция [Int], опция [UUID], опция [Список [String]] и т.д.