java - 我需要在未映射的父类(super class)属性上使用 @Transient 注释吗?

标签 java hibernate jpa transient

好的,这是一个简单的例子:

我有一个这样定义的抽象父类(super class):

abstract public class AbstractSuperEntity {

    private char someFlag;

    public void setSomeFlag(char flagValue) {
        this.someFlag = flagValue;
    }

    public char getSomeFlag() {
        return this.someFlag;
    }
 }

我所有的 @Entity 类都继承自它。一个例子可能是:

@Entity
@Table("SOME_ENTITY")
public class SomeEntity extends AbstractSuperEntity {

    @Column(name="ID");
    private Long id;

    etc.

}

AbstractSuperEntity 中的someFlag 属性是否需要有@Transient

我试过有和没有,似乎没有任何区别。但我只是害怕我错过了一些东西。


编辑感谢所有快速回答。

一位同事还向我指出了 JPalace.org 上的 JPA 教程,特别是 ORM and JPA Concepts 上的页面其中包含以下部分:

Non-Entity Superclasses

Entities may also extend non-entity superclasses. These superclasses can be either abstract or concrete. The state of non-entity superclasses is always non-persistent. Thus, any state inherited from the non-entity superclass by an entity class is non-persistent.

Similarly to mapped superclasses, non-entity superclasses may not be used subject to queries. Mapping and relationship annotation present in a non-entity superclasses are ignored. Again, this is beacause there is no correponding database table to which the querying operations or relationships can be applied.

最佳答案

不,不需要 @Transient 注释,因为您的 AbstractSuperEntity 既不是 MappedSuperClass , 也不是 Entity .如果您希望它包含映射信息(继承的),则必须使用这些注释之一对其进行注释。

关于java - 我需要在未映射的父类(super class)属性上使用 @Transient 注释吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23903628/

相关文章:

jpa - 在回调事件 : 'prePersist' 上执行自动 Bean 验证时违反了 Bean 验证约束

java - 在没有 em.flush() 的情况下使用 JPA 持久化深度对象图

java - 如何将 testNG 实例传递到另一个类

java - Hibernate 无法在继承类上提取 ResultSet

java - 我怎样才能在显示器上显示不同的图像:column based on other column's value?

java - 如果 JPA 不存在,如何在数据库中创建对象?

java - 嵌套的 Hibernate 实体

spring - Grails 3.x : Re-using JPA/Hibernate Domain classes: Domain class not found

java - 将 Finalize() 与装饰模式一起使用

java - 如何访问 BufferedWriter 中的缓冲区