Java / Hibernate 在保存更新或删除后调用存储过程

Java / Hibernate call stored procedure after save update or delete

如何在插入、更新或删除对象后调用存储过程?

我的对象是这样的:

@Entity
public class a {
    private String b;
    private String c;

    public a() {
        super();
    }

    // getter setter

    @PostPersist
    @PostUpdate
    @PostRemove
    private void callProcedure() {
        // ???
    }
}

执行此操作的最佳方法是什么?

在 Java 应用程序中,您不应在实体模型中调用业务逻辑。您可以在实体中的@PrePersist、@PreUpdate 中设置一些值,例如:

/**
 * Sets createdAt before insert
 */
@PrePersist
public void setCreationDate() {
    this.createdAt = new Date();
}

/**
 * Sets updatedAt before update
 */
@PreUpdate
public void setChangeDate() {
    this.updatedAt = new Date();
}

或者您可以在@PostPersist 方法中获取生成的主键值。但是存储过程处理属于你的服务。您的服务应调用存储过程并获取结果以供进一步处理。您不能在您的服务中使用@PostPersist、@PostUpdate 和@PostRemove 注解,但您可以在您的服务中编写afterSave()、afterRemove() 方法来调用存储过程并处理调用存储过程的结果。

查看此 link 示例:How to call stored procedures in JPA