Java 使字段对于序列化是暂时的,但是对于JPA是非暂时的

Java 使字段对于序列化是暂时的,但是对于JPA是非暂时的,java,jpa,serialization,jpa-2.0,eclipselink,Java,Jpa,Serialization,Jpa 2.0,Eclipselink,问题: 是否可以由JPA保留一个字段,但通过序列化跳过该字段 有可能实现相反的效果(JPA跳过一个字段,而序列化没有),如果使用了这个特性,那么反过来肯定会有用 大概是这样的: @Entity class MyClass { // Other fields. @NonTransient private transient String strangeField; } 我问这个问题主要是出于好奇,所以我没有特定的上下文。一个选项是对实体使用属性访问。然后,将该字段标记

问题:
是否可以由JPA保留一个字段,但通过序列化跳过该字段

有可能实现相反的效果(JPA跳过一个字段,而序列化没有),如果使用了这个特性,那么反过来肯定会有用

大概是这样的:

@Entity 
class MyClass {
    // Other fields.

    @NonTransient
    private transient String strangeField;
}

我问这个问题主要是出于好奇,所以我没有特定的上下文。

一个选项是对实体使用属性访问。然后,将该字段标记为瞬态。JPA将忽略该字段,只使用getter。因此,序列化跳过该字段,JPA使用getter

@Entity(AccessType.Property)
class MyClass {
    // Other fields.

    private transient String strangeField;

    public String getStrangeField() {
        return strangeField;
    }

    public void setStrangeField(String strangeField) {
        this.strangeField = strangeField;
    }
}

您需要使用属性访问,或者使用XML来映射实体而不是注释