问题描述
我的示例代码基于Spring Boot 2.4.0-M2(spring-data-r2dbc 1.2.0-M2),Java 11,Postgres。
在spring博客和更改日志中,delcares Spring Data R2dbc获得了音频支持。
我启用了这样的审核功能。
@Configuration
@EnableR2dbcAuditing
class DataConfig {
@Bean
ReactiveAuditorAware<String> auditorAware() {
return () -> Mono.just("hantsy");
}
}
以及实体类和存储库。
interface PersonRepository extends R2dbcRepository<Person,UUID> {
}
@Data
@ToString
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(value = "persons")
class Person {
@Id
@Column("id")
private UUID id;
@Column("first_name")
private String firstName;
@Column("last_name")
private String lastName;
@Column("created_at")
@CreatedDate
private LocalDateTime createdAt;
@Column("updated_at")
@LastModifiedDate
private LocalDateTime updatedAt;
@Column("version")
@Version
private Long version;
}
模式脚本。 (不用担心UUID,该扩展是在docker init脚本中初始化的)
CREATE TABLE IF NOT EXISTS persons (
-- id SERIAL PRIMARY KEY,id UUID DEFAULT uuid_generate_v4(),first_name VARCHAR(255),last_name VARCHAR(255),created_at TIMESTAMP,updated_at TIMESTAMP,version INTEGER,PRIMARY KEY (id)
);
当我在ApplicationRunner
中添加以下代码段以进行审核时,@createdDate
和@lastModifiedDate
均未填充。
persons
.save(
Person.builder()
.firstName("hantsy")
.lastName("bai")
.build()
)
.log()
.map(person -> {
person.setFirstName("new Hantsy");
return person;
})
.flatMap(persons::save)
.log()
.then()
.thenMany(persons.findAll())
.subscribe(
data -> log.info("saved data: {}",data),err -> log.error("err: {}",err)
);
控制台显示:
2020-09-07 22:12:30.734 INFO 8800 --- [actor-tcp-nio-2] reactor.Mono.UsingWhen.1 : onNext(Person(id=8814e87c-c6d3-4dca-a095-fb5f41696b49,firstName=hantsy,lastName=bai,createdAt=null,updatedAt=null,version=0))
2020-09-07 22:12:30.779 INFO 8800 --- [actor-tcp-nio-2] reactor.Mono.UsingWhen.1 : onComplete()
2020-09-07 22:12:30.801 INFO 8800 --- [actor-tcp-nio-2] reactor.Mono.FlatMap.2 : | onNext(Person(id=8814e87c-c6d3-4dca-a095-fb5f41696b49,firstName=new Hantsy,version=1))
2020-09-07 22:12:30.801 INFO 8800 --- [actor-tcp-nio-2] reactor.Mono.FlatMap.2 : | onComplete()
2020-09-07 22:12:30.823 INFO 8800 --- [actor-tcp-nio-2] com.example.demo.DemoApplication : saved data: Person(id=981741c3-4468-474d-9e92-b4d396f004d9,version=0)
2020-09-07 22:12:30.824 INFO 8800 --- [actor-tcp-nio-2] com.example.demo.DemoApplication : saved data: Person(id=8814e87c-c6d3-4dca-a095-fb5f41696b49,version=1)
已更新:创建了another simple example(基于H2)用于r2dbc审核以重现它,测试代码有效,但是应用仍然存在问题。不知道我的原始示例(基于Postgres,并使用Pg特定的JSON,Enum等)是否需要其他配置,应用程序和测试代码均未按预期工作。
已更新:Github问题中报告了一个相关问题,请参见issues#451。更新了my sample,以确保在1.2.0 snapshot20200910版本中应用了此修复程序。我认为下一个版本(1.2.0-RC1)将包含这些修复程序。
已更新:我的示例已更新为Spring Boot 2.4.0-M3,该错误已修复。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)