假设有一个像 Document
这样的实体,并且它有 type
字段。当type
为draft
时可以更新。但是当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/