Tag: 春天数据

默认值@ProjectedPayload / ProjectingJackson2HttpMessageConverter

我在接口上使用@ProjectedPayload将JSON请求主体绑定到我的接口的代理实例。 我的接口如下(在Kotlin中, val只是转化为Java getter): @ProjectedPayload interface ImportServer { val id: UUID? val name: String? } 现在,这里的id是完全可选的,但是至少据我所知,我没有办法指定它。 如果我尝试访问id属性,而不会出现在请求正文中,我将收到来自JsonPath的异常: com.jayway.jsonpath.PathNotFoundException: No results for path: $['id'] 。 如果我可以配置JsonPath,我可以使用Option.DEFAULT_PATH_LEAF_TO_NULL ,对于不存在的元素,我会得到null 。 但是,我没有办法得到JsonPath配置,它发生在JsonProjectingMethodInterceptorFactory里面。 有没有办法让我在这里指定一个默认值? 或者是有没有办法让我来检测是否存在id没有访问id属性的第一位?

Spring数据Elasticsearch与Kotlin数据类的脚本字段导致Jackson序列化问题

当试图从Elasticsearch获取查询结果并将其映射到使用@org.springframework.data.elasticsearch.annotations.ScriptedField批注的Kotlin数据类时,结果实例似乎只用脚本字段创建,而不是其他字段被同时获取,因此导致.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 […]

春天的数据mongodb和kotlin

使用弹簧数据mongodb使用kotlin时,我遇到了一个问题。 当我尝试从mongodb读取对象时,我得到一个错误,抱怨说我的数据类没有默认的无参数构造函数。 我可以通过给我的数据类中的每个字段的值来解决这个问题,所以编译器会生成一个默认的无参数构造函数。 当然,我不是真的想这样做。 我知道有一个杰克逊kotlin模块,它包含在我的maven文件中。 它适用于反序列化对象,我得到了HTTP,所以我知道春天拿起它。 但似乎春天的数据mongodb不使用杰克逊对象映射器? 有没有办法我可以在春天的数据mongodb中使用杰克逊对象映射器或修复没有非参数构造函数的问题?

在Kotlin函数中使用@Qualifier

在Kotlin中,函数参数始终是阻止在参数级使用@Qualifier()的值。 如果有人想在同一个应用程序中经常访问的不同数据库的配置类中创建多个DataSource ,那么组织这个的推荐方法是什么? 在Kotlin中不允许执行以下在Java中相当常见的操作。 @Configuration class DatabaseAdminConfig { @Bean @ConfigurationProperties(prefix = "spring.ds_admin") fun adminDataSource(): DataSource { return DataSourceBuilder.create().build() } @Bean fun adminJdbcTemplate(@Qualifier("adminDataSource") dsAdminDb: DataSource): JdbcTemplate { return JdbcTemplate(dsAdminDb) } @ConfigurationProperties(prefix = "spring.ds_widget") fun widgetDataSource(): DataSource { return DataSourceBuilder.create().build() } @Bean fun widgetJdbcTemplate(@Qualifier("widgetDataSource") widgetDataSource: DataSource): JdbcTemplate { return JdbcTemplate(widgetDataSource) } }