У меня возникает проблема при использовании весенних данных mongodb togheter с kotlin. Когда я пытаюсь читать объекты из mongodb, я получаю сообщение об ошибке, жалуясь на то, что мои классы данных не имеют конструктора no-args по умолчанию. Я могу решить это, предоставив каждому полю значение в моем классе данных, поэтому компилятор будет генерировать конструктор no-args по умолчанию. Конечно, я не хочу этого делать.
Я знаю, что есть модуль Jackson kotlin, и он включен в мой файл maven. Он работает для десериализации объектов, которые я получаю через http, поэтому я знаю, что весна подбирает его. Кажется, однако, что весенние данные mongodb не используют объект jackson objectmapper?
Есть ли способ, которым я могу использовать объект-объект jackson в весенних данных mongodb или исправить проблему отсутствия конструктора non args?
Теперь есть плагин No-Arg . Вы можете добавить этот плагин в свой скрипт Gradle или Maven Build Script и запустить свой код без коаксиального шаблона или значения «по умолчанию» для ваших варов.
Очень простой пример с Gradle:
добавить плагин для build.grade
buildscript { ext { kotlinVersion = '1.1.2' } repositories { mavenCentral() } dependencies { classpath("org.jetbrains.kotlin:kotlin-noarg:${kotlinVersion}") } } apply plugin: "kotlin-noarg" // apply "kotlin-jpa" for JPA related annotation noArg { // define annotation, where you need an empty custructor annotation("org.springframework.data.mongodb.core.mapping.Document") }
Создайте свой документ
@Document(collection = "simpleDoc") class SimpleDocument(@Id val id: String, @Field val name: String)
Используйте Spring-Data-REST для создания вставки
curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/hal+json' -d '{"name":"awesome"}' 'http://localhost:8080/docs'
Прочтите свой документ
curl -X GET --header 'Accept: application/hal+json' 'http://localhost:8080/docs/59284d508bc7ee0b4c8fe293'