java - JPA Hibernate,如何在创建时进行验证并忽略更新时的验证

标签 java hibernate spring-boot jpa

我有以下实体:

@Entity
@Table(name = "bookings")
public class Booking {


    @Null
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @Null
    @Column(name = "column1", columnDefinition = "VARCHAR(25) DEFAULT 'CREATED'")
    private String column1;

    //the rest of the fields....
}

这是一个简单的 Spring Boot 项目,规则是创建新行时不应该有 column1 数据(因此它使用值“CREATED”),但是在行更新上我喜欢更改“ENDED”的值

有没有办法告诉 Hibernate 仅在创建新行时进行验证,而在更新行时忽略验证?

最佳答案

看看

@PrePersist Executed before the entity manager persist operation is actually executed or cascaded. This call is synchronous with the persist operation.

@PreUpdate Executed before the database UPDATE operation.

      @PrePersist
      protected void onCreate() {
        column1 = "CREATED";
      }

      @PreUpdate
      protected void onUpdate() {
        column1 = "ENDED";
      }

参见https://docs.jboss.org/hibernate/core/4.0/hem/en-US/html/listeners.html

关于java - JPA Hibernate,如何在创建时进行验证并忽略更新时的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58416028/

相关文章:

java - 如何使用java在facebook中获取用户访问 token

java - Spring Boot/JPA/mySQL - 多对一关系创建了太多 SQL 查询

java - Java 和 Hibernate 中外键的使用

spring-boot - 从groovy迁移到Kotlin Gradle脚本后,单元测试中出现NullPointerException

spring-boot - 使用 JWT 进行 Spring Boot session 管理

java - 调用基本重绘方法?

java - 检查枚举是否为 null 或为空

java - 点击 Android 对话框外部以将其关闭?

hibernate - 我如何让许多 @ManyToMany 关系起作用?

java - 更新字符串字段,将 mongodb 中的另一个字符串与 spring-data 连接起来