将完整实体标记为“updatable = false”

时间:2015-09-22 11:22:57

标签: jpa eclipselink

在一个应用程序中,有几个实体类,应禁止对数据库的更新语句。我想插入数据库并从中读取数据,但绝不会对现有记录进行任何更新。

  

有没有办法将整个@Entity课程标记为updatable=false

  • 可以用@Column(updatable=false)或类似的注释来注释每个字段,但出于显而易见的原因,我想避免这种情况。

  • 摆脱setter方法也不是一个选项,因为实体类也用作DTO,而应用程序的其他部分也需要那些setter。所以这会导致重构现有代码。

是否有另一种简单而干净的方法来实现我希望使用JPA 2.1 / EclipseLink(+扩展程序)

1 个答案:

答案 0 :(得分:5)

您可以使用@PreUpdate

@Entity
public class ReadOnlyEntity {
  @PreUpdate
  private void preUpdate() {
    throw new UnsupportedOperationException();
  }
}

这样你永远不会更新(写)该实体。