【问题标题】:is it possible to make all fields of an object @Transient by default是否可以默认使对象的所有字段@Transient
【发布时间】:2011-05-26 12:23:00
【问题描述】:

我有一个基础实体类,它将派生在一百多个子类中。

为了确保持久化字段是我想要的(而不是该基类的用户),我想声明这个 JPA 实体默认将所有字段设置为瞬态。

这怎么可能?

【问题讨论】:

  • 据我所知,JPA 假定默认情况下所有字段都是持久的,因此您必须逐个字段使用 @Transient。我知道没有办法覆盖默认值。
  • 我想你可以看看创建一个持久化的实体视图,然后使用复制构造函数实例化你的实体。因此,在实体调用 getPersistentState 时,它​​返回要保存到数据存储区的 PersistentEntity,然后当您读回它时,通过传入从数据存储区返回的 PersistentEntity 来创建实体。如果您不拥有基类,这听起来可能是一个不错的选择,因为您的持久性将始终与未拥有的超类相关联。

标签: java persistence jpa-2.0


【解决方案1】:

如果您不将 @MappedSuperclass 放在要扩展的类上,则类属性将永远不会被持久化。 您可以为某些属性提供 getter 方法,并将注释放在属性而不是字段上。 @Id 注释确定您是否需要字段或属性。在 JPA 2 中,您还可以使用 @Access 注释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2014-08-24
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 2021-02-01
    • 1970-01-01
    相关资源
    最近更新 更多