java - 如何禁用基于一个字段的实体更新?

标签 java hibernate entity

假设有一个像 Document 这样的实体,并且它有 type 字段。当typedraft时可以更新。但是当type创建时,hibernate不应该保存带有任何修改值的文档。 hibernate 可以吗?

最佳答案

您可以使用@Immutable创建一个不可变的实体。注解,在这种情况下,您无法修改实体,然后它会被持久化。

另一个解决方案是通过 session 使实体只读,如 official documentation 中所示。 .

还有一个解决方案,是提供 EntityListener对于您的实体,例如:

@Entity
@EntityListeners(MakeReadOnly.class)
public class SomeEntity {
    // ...
}

public class MakeReadOnly {
    @PreUpdate
    void onPreUpdate(Object o) {
        //according to filed value throw new RuntimeException("...");
    }
}

关于java - 如何禁用基于一个字段的实体更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33687464/

相关文章:

java - Swing JTabbedPane 中的外观未更新

java - 如何将 JavaFX SDK 直接捆绑到输出 jar 中?

java - 如何在 YAML 文件中为简单的 POJO 定义映射?

java - 创建 SessionFactory 时自动将模式 DDL 导出到数据库

java - 如何禁止枚举的所有值(在数据库级别),除了在java代码中定义之外?(null,empty)

java - EJB、JPA业务方法转化为实体

frameworks - 实体编程教程?

java - 执行两个或多个算法的策略模式

java - 分发使用 Hibernate 的持久性类

entity - VHDL 你能在同一个文件中声明一个包和一个实体吗?