У меня есть небольшое приложение, написанное на scala, которое отправляет запрос в mysql, получает результат, затем конвертирует его в json и отправляет на какой-то http-сервер. Я использую java jdbc и соединитель mysql для подключения к базе данных и спрей-json для преобразования коллекции scala в json. Итак, я создаю соединение с БД, выполняю запрос и затем получаю результат с помощью getResultSet()
. Затем я перебираю его и копирую результат на изменяемую карту:
while(result.next()) {
val SomeExtractor(one, two) = result
map.update(one, map.getOrElse(one, List()) ::: List(two))
}
Это отлично работает, но затем мне нужно преобразовать результат в неизменяемую карту, потому что spray-json не может преобразовать изменяемые коллекции в json, насколько мне известно. Есть ли хороший способ преобразовать результат jdbc здесь в неизменяемую коллекцию, не копируя его во временную изменяемую карту? Может быть, можно как-то использовать потоки? Я спрашиваю, потому что похоже, что для этого должен быть какой-то классный функциональный шаблон, о котором я понятия не имею.
p.s. Кстати, я не могу просто использовать Slick, потому что он не поддерживает хранимые процедуры, насколько мне известно.
toList
при возврате из запросов и поддерживает хранимые процедуры? github.com/novus/novus-jdbc (я написал это, когда работал там.) - person wheaties   schedule 07.02.2014