Java 弹簧数据Neo4j和x2B上的数据转换器;科特林

Java 弹簧数据Neo4j和x2B上的数据转换器;科特林,java,spring-boot,kotlin,neo4j,spring-data-neo4j,Java,Spring Boot,Kotlin,Neo4j,Spring Data Neo4j,为了一个简单的项目,我正在从Java切换到Kotlin,但我正在考虑一个转换问题。我已经在数据库中找到了: CREATE (:Meeting {on: '2018-10-09', location: "Oracle's offices"}) 在kotlin中(使用SpringBoot+Spring数据neo4J) 然后,我尝试使用注释@Converter和这样的自定义转换器 class LocalDateParser : AttributeConverter<LocalDate, Str

为了一个简单的项目,我正在从Java切换到Kotlin,但我正在考虑一个转换问题。我已经在数据库中找到了:

CREATE (:Meeting {on: '2018-10-09', location: "Oracle's offices"})
在kotlin中(使用SpringBoot+Spring数据neo4J)

然后,我尝试使用注释@Converter和这样的自定义转换器

class LocalDateParser : AttributeConverter<LocalDate, String> {

    val formatter: DateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")


    override fun toGraphProperty(value: LocalDate): String? {
        return formatter.format(value)
    }

    override fun toEntityAttribute(value: String?): LocalDate {
        return LocalDate.parse(value);
    }
}
有人能帮我吗

配置:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.5.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
...
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-kotlin</artifactId>
</dependency>
<dependency>
     <groupId>org.neo4j</groupId>
     <artifactId>neo4j-ogm-http-driver</artifactId>
     <version>3.1.11</version>
 </dependency>
 <dependency>
     <groupId>org.neo4j</groupId>
     <artifactId>neo4j-ogm-bolt-driver</artifactId>
     <version>3.1.11</version>
 </dependency>

org.springframework.boot
spring启动程序父级
2.1.5.1发布
...
org.springframework.boot
spring-boot-starter-data-neo4j
com.fasterxml.jackson.module
杰克逊模块科特林
org.neo4j
neo4j ogm http驱动程序
3.1.11
org.neo4j
neo4j ogm螺栓驱动器
3.1.11

只需尝试将以下bean添加到您的项目中:

@Component
class LocalDateFormatter : Formatter<LocalDate> {
    override fun parse(text: String, locale: Locale): LocalDate {
        return LocalDate.parse(text, DateTimeFormatter.ISO_LOCAL_DATE)
    }

    override fun print(obj: LocalDate, locale: Locale): String {
        return DateTimeFormatter.ISO_LOCAL_DATE.format(obj)
    }
}

在Java中。

使用@Converter时出现了什么错误?你使用@Converter(LocalDateParser.class)了吗?是的,我试过了,他不想编译,我甚至有一个Intellij内部错误…试着使用::class.java而不是.class。你应该使用LocalDate.parse(date,formatter);好的,但是你能试试吗。可能是一个地方pbI我会尽快试一试来自哪里@Cepr0?因为我没有类所需的类型参数Formatter@GillesBodart是的。请检查答案-我已经更新了…我会尽快尝试并回来
MM/dd/yy
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.5.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
...
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-kotlin</artifactId>
</dependency>
<dependency>
     <groupId>org.neo4j</groupId>
     <artifactId>neo4j-ogm-http-driver</artifactId>
     <version>3.1.11</version>
 </dependency>
 <dependency>
     <groupId>org.neo4j</groupId>
     <artifactId>neo4j-ogm-bolt-driver</artifactId>
     <version>3.1.11</version>
 </dependency>
@Component
class LocalDateFormatter : Formatter<LocalDate> {
    override fun parse(text: String, locale: Locale): LocalDate {
        return LocalDate.parse(text, DateTimeFormatter.ISO_LOCAL_DATE)
    }

    override fun print(obj: LocalDate, locale: Locale): String {
        return DateTimeFormatter.ISO_LOCAL_DATE.format(obj)
    }
}
@Bean
fun formattingConversionServiceFactoryBean(): FormattingConversionServiceFactoryBean {
    val factoryBean = FormattingConversionServiceFactoryBean()
    factoryBean.setFormatters(setOf(LocalDateFormatter()))
    return factoryBean
}