有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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


共 (1) 个答案

  1. # 1 楼答案

    您可以使用^{}注释创建一个不可变的实体,在这种情况下,您无法修改该实体,然后将其持久化

    另一个解决方案是通过session将实体设置为只读,如official documentation中所示

    另一个解决方案是为您的实体提供^{},如:

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