8000 BinaryRowEncoder does not support encode java.time.LocalDateTime · Issue #229 · jasync-sql/jasync-sql · GitHub 8000
[go: up one dir, main page]

Skip to content
BinaryRowEncoder does not support encode java.time.LocalDateTime #229
Closed
@ONI-MIKO

Description

@ONI-MIKO

environment

jasync-r2dbc-mysql version: 1.1.7

<!-- r2dbc mysql -->
<dependency>
   <groupId>com.github.jasync-sql</groupId>
   <artifactId>jasync-r2dbc-mysql</artifactId>
   <version>1.1.7</version>
</dependency>

insert into database report this error:

Caused by: java.lang.UnsupportedOperationException: An operation is not implemented: couldn't find mapping for class java.time.LocalDateTime
	at com.github.jasync.sql.db.mysql.binary.BinaryRowEncoder.encoderFor(BinaryRowEncoder.kt:100) ~[jasync-mysql-1.1.7.jar:na]
	at com.github.jasync.sql.db.mysql.encoder.PreparedStatementExecuteEncoder.encodeValue(PreparedStatementExecuteEncoder.kt:62) ~[jasync-mysql-1.1.7.jar:na]
	at com.github.jasync.sql.db.mysql.encoder.PreparedStatementExecuteEncoder.encodeValues(PreparedStatementExecuteEncoder.kt:46) ~[jasync-mysql-1.1.7.jar:na]
	at com.github.jasync.sql.db.mysql.encoder.PreparedStatementExecuteEncoder.encode(PreparedStatementExecuteEncoder.kt:27) ~[jasync-mysql-1.1.7.jar:na]
	at com.github.jasync.sql.db.mysql.codec.MySQLOneToOneEncoder.encode(MySQLOneToOneEncoder.kt:67) ~[jasync-mysql-1.1.7.jar:na]
	at com.github.jasync.sql.db.mysql.codec.MySQLOneToOneEncoder.encode(MySQLOneToOneEncoder.kt:23) ~[jasync-mysql-1.1.7.jar:na]
	at io.netty.handler.codec.MessageToMessageEncoder.write(MessageToMessageEncoder.java:89) ~[netty-codec-4.1.58.Final.jar:4.1.58.Final]
	... 33 common frames omitted

this is my entity example

import java.time.LocalDateTime;

public class MyEntity {
    /**
     * 创建时间
     */
    private LocalDateTime createTime;
    /**
     * 更新时间
     */
    private LocalDateTime updateTime;
}

I saw this part of the code for the BinaryRowEncoder

fun encoderFor(v: Any): BinaryEncoder {
    return this.encoders.getOrElse(v::class.java) {
        return when (v) {
            is CharSequence -> this.stringEncoder
            is java.math.BigInteger -> this.stringEncoder
            is BigDecimal -> this.stringEncoder
            is ReadableDateTime -> DateTimeEncoder
            is ReadableInstant -> ReadableInstantEncoder
            is LocalDateTime -> LocalDateTimeEncoder
            is java.sql.Timestamp -> SQLTimestampEncoder
            is java.sql.Date -> SQLDateEncoder
            is java.util.Calendar -> CalendarEncoder
            is LocalDate -> LocalDateEncoder
            is LocalTime -> LocalTimeEncoder
            is java.sql.Time -> SQLTimeEncoder
            is Duration -> DurationEncoder
            is java.util.Date -> JavaDateEncoder
            is ByteBuffer -> ByteBufferEncoder
            is ByteBuf -> ByteBufEncoder
            else -> XXX("couldn't find mapping for ${v::class.java}")
        }
    }
}

can add support for java.time.LocalDateTime ?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0