java - 如何在 Spring 数据 r2dbc 中替换 @PrePersist

标签 java spring-data spring-webflux project-reactor spring-data-r2dbc

我正在使用 spring-boot-starter-data-r2dbc (版本 1.1.3)Spring Webflux 应用程序中的模块。
我想将实体生命周期回调添加到我的持久层。
使用 Spring Data JPA,可以使用 @PrePersist 之类的注释。 , @PreUpdate , ETC。
Spring Data r2dbc 有什么方便的方法来实现这一点吗?

最佳答案

spring-data-r2dbc:1.2.0开始这是新的 Spring Data 2020.0 release 的一部分可以使用新的“生命周期实体回调 API”。
这是一个简短的例子:

import org.springframework.data.r2dbc.mapping.event.BeforeSaveCallback;


@Component
public class DefaultingEntityCallback implements BeforeSaveCallback<MyEntity> {

    @Override
    public Publisher<MyEntity> onBeforeSave(final MyEntity entity,
                                            final OutboundRow row,
                                            final SqlIdentifier table) {
        // do something
        return Mono.just(entity);
    }
}
这是一些文档:
https://docs.spring.io/spring-data/r2dbc/docs/current/reference/html/#r2dbc.entity-callbacks

关于java - 如何在 Spring 数据 r2dbc 中替换 @PrePersist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64125839/

相关文章:

java - 如何在 JavaDB 上将 JPA 与 Java EE 7、Glassfish 4.1 和 Maven 结合使用

java - 如何等待List中的所有Monos完成(成功与否无关紧要)

java - 为什么在为对象设置值时会收到 NullPointerExceptions?

java - 链接实体类中的 JPQL 连接条件

java - 当使用 Jackson XmlWrapper 在类里面排名第二时,无法反序列化(转换)未包装的列表

java - org.hibernate.TransientPropertyValueException : object references an unsaved transient instance - save the transient instance before flushing

java - Hibernate 可以自动识别实体类型吗?

jakarta-ee - 如何将多个 spring-data 应用程序与共享数据库一起使用

java - WebTestClient 返回线程不支持的 IllegalStateException : block()/blockFirst()/blockLast() are blocking,

spring-boot - 如何将 Spring WebClient 与 Jetty 一起使用,而不是 Netty?