编程语言
首页 > 编程语言> > java – 如何使用自定义id插入记录使用Spring数据jdbc?

java – 如何使用自定义id插入记录使用Spring数据jdbc?

作者:互联网

对于Spring Data JPA,我可以使用注释@GeneratedValue(strategy = GenerationType.AUTO)插入带有自定义id的记录,但是对于Spring Data JDBC,如何插入带有自定义id的记录?我曾尝试使用id插入,但没有任何异常抛出,并且记录未插入表中.

解决方法:

使用Spring Data JDBC的方法是注册一个BeforeSaveEvent ApplicationListener,它创建id并在实体中设置它.

@Bean
public ApplicationListener<BeforeSaveEvent> idSetting() {

    return event -> {

        if (event.getEntity() instanceof LegoSet) {

            LegoSet legoSet = (LegoSet) event.getEntity();
            if (legoSet.getId() == null) {
                legoSet.setId(createNewId());
            }
        }
    };
}

有一个例子证明了在Spring Data Examples

你的行没有插入表中,但你也没有得到异常的原因是:Spring Data JDBC得出的结论是,自设置ID并执行更新以来,实体已经存在.
但由于它不存在,更新无法更新任何行,因此没有任何反应.
可能值得创建一个改进请求来检查更新计数为0.

标签:java,insert,spring,id-generation,spring-data-jdbc
来源: https://codeday.me/bug/20190622/1261735.html