Spring Data Elasticsearch с полем скриптов с данными класса данных Kotlin приводит к проблеме сериализации Джексона

При попытке получить результат запроса из Elasticsearch и сопоставить его с классом данных Kotlin, который использует аннотацию @org.springframework.data.elasticsearch.annotations.ScriptedField экземпляр результата создается, только с полем сценария, но не с другим поля, которые должны быть получены одновременно, и поэтому приводит к .MissingKotlinParameterException . Запрос выполняется с помощью метода ElasticsearchRepository#search , который поставляется с Spring Data Elasticsearch, вот соответствующий код:

  val searchQuery = NativeSearchQueryBuilder() .withQuery(geoDistanceQuery("location").point(53.0, 10.0).distance("100km")) .withScriptField(ScriptField("distance", Script(ScriptType.INLINE, "expression", "doc['location'].arcDistance(params.latitude, params.longitude)", emptyMap()))) .withFilter(boolQuery().must(existsQuery("title"))) .withSort(SortBuilders.geoDistanceSort("location", 53.0, 10.0).order(SortOrder.ASC)) .withPageable(PageRequest.of(0, 10)) .build() val nearby = eventRepository.search(searchQuery) 

Трассировка стека имеет немного больше контекста:

  Caused by: com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException: Instantiation of [simple type, class de.nava.demo.events.model.Event] value failed for JSON property id due to missing (therefore NULL) value for creator parameter id which is a non-nullable type at [Source: (String)"{"distance":53.542239465750754}"; line: 1, column: 31] (through reference chain: de.nava.demo.events.model.Event["id"]) at com.fasterxml.jackson.module.kotlin.KotlinValueInstantiator.createFromObjectWith(KotlinValueInstantiator.kt:53) at com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:189) at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:487) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1265) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:325) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4011) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2992) 

Может ли кто-то пролить свет на то, как вы могли бы построить полный экземпляр со всеми полями, заполненными сразу?

Используемые версии:

  • Spring Boot Version 2.0.0.M3
  • Spring Data Elasticsearch 3.0.0.RC2 (Elasticsearch 5.5.0)
  • Модуль Джексона Котлин 2.9.0

    Interesting Posts

    Room – запрос SELECT, получение или дефолт

    Как точно работает ktlin htmlx-строитель под капотом?

    Как использовать код, который опирается на ThreadLocal с сопрограммами Kotlin

    Оператор «Когда» и «switch» оператора Java

    Класс Kotlin, реализующий ошибку интерфейса Java

    Kotlin – Is kotlin содержит класс Object, такой как базовый класс в java?

    Как вы вызываете удаление JavaScript из Kotlin?

    Ни один из подписчиков RxJava onNext / onError / onComplete не вызывается при цепочке. Наблюдения, созданные из Observable.create ()

    Как сохранить логотип над рушащейся панелью инструментов

    Скрипт Kotlin как параметры конфигурации Gradle, не использующие расширение

    Как сохранить тип объекта для интеллектуального каста при возврате Any

    Java позволяет получить доступ к базовой переменной Kotlin через ее дочерний элемент, но не Kotlin, почему?

    Как использовать выражение Lamba, чтобы сделать вызовы метода Java менее подробными в Kotlin?

    Как применить метод запуска / остановки звука с помощью ToggleButton?

    Получить случайный элемент из списка с использованием потоков kotlin

    Давайте будем гением компьютера.