在一个应用程序中,有几个实体类,应禁止对数据库的更新语句。我想插入数据库并从中读取数据,但绝不会对现有记录进行任何更新。
有没有办法将整个
@Entity
课程标记为updatable=false
?
可以用@Column(updatable=false)
或类似的注释来注释每个字段,但出于显而易见的原因,我想避免这种情况。
摆脱setter方法也不是一个选项,因为实体类也用作DTO,而应用程序的其他部分也需要那些setter。所以这会导致重构现有代码。
是否有另一种简单而干净的方法来实现我希望使用JPA 2.1 / EclipseLink(+扩展程序)
答案 0 :(得分:5)
您可以使用@PreUpdate
:
@Entity
public class ReadOnlyEntity {
@PreUpdate
private void preUpdate() {
throw new UnsupportedOperationException();
}
}
这样你永远不会更新(写)该实体。