r2dbc-mssql generateKey返回类型数字

示例堆栈:Spring Data R2dbc 1.0.0.RELEASE,R2dbc Mssql 0.8,完整代码为here

初始化脚本:

use tempdb;

IF OBJECT_ID(N'dbo.posts',N'U') IS NULL
BEGIN
    CREATE TABLE posts (
        id BIGINT NOT NULL IDENTITY(1,1) PRIMARY KEY,title VARCHAR (50) NOT NULL,content VARCHAR (50) NOT NULL,createdAt DATETIME,updatedAt DATETIME
    )
END;

保存数据并从DataInitializer获取生成的密钥时。

@Component
@Slf4j
class DataInitializer {

    private final Databaseclient databaseclient;

    public DataInitializer(Databaseclient databaseclient) {
        this.databaseclient = databaseclient;
    }

    @EventListener(value = ContextRefreshedEvent.class)
    public void init() {
        log.info("start data initialization...");
        this.databaseclient.delete().from("posts")
                .then().
                and(

                        this.databaseclient.insert()
                                .into("posts")
                                //.nullValue("id",Integer.class)
                                .value("title","First post title")
                                .value("content","Content of my first post")
                                .map((r,m) -> r.get( 0,BigDecimal.class)).all()
                                .log()
                )
                .thenmany(
                        this.databaseclient.select()
                                .from("posts")
                                .orderBy(Sort.by(desc("id")))
                                .as(Post.class)
                                .fetch()
                                .all()
                                .log()
                )
                .subscribe(null,null,() -> log.info("initialization is done..."));
    }

}

如果我在行Integer中使用LongBigDecimal而不是.map((r,BigDecimal.class)).all(),则会出现错误,表明无法解码类型为[java。 lang.Long],名称为[GENERATED_KEYS]服务器类型为[numeric] ,它不是架构脚本中定义的bigint,我必须使用BigDecimal使其正常工作。 / p>

zz98107 回答:r2dbc-mssql generateKey返回类型数字

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2814677.html

大家都在问