【问题标题】:Mark complete entity as "updatable=false"将完整实体标记为“可更新=假”
【发布时间】:2015-09-22 11:22:57
【问题描述】:

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

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

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

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

是否有另一种简单而干净的方法来实现我想要使用 JPA 2.1 / EclipseLink (+Extensions)

【问题讨论】:

    标签: jpa eclipselink


    【解决方案1】:

    您可以为此使用@PreUpdate

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

    这样您就永远无法更新(写入)该实体。

    【讨论】:

    • 好主意,tyvm! :)
    猜你喜欢
    • 2019-02-13
    • 2019-09-26
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    相关资源
    最近更新 更多