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