类型层次结构中的JPA混合AccessType

时间:2018-12-20 13:29:00

标签: java jpa eclipselink derby

我有两个JPA实体,一个扩展另一个实体:

@Entity
@Access(AccessType.FIELD)
public abstract class ExampleTypeA {

    @GeneratedValue
    @Id
    private long entityId;

}

@Entity
@Access(AccessType.PROPERTY)
public class ExampleTypeB extends ExampleTypeA {

}

抽象实体使用AccessType.FIELD,扩展类型使用@Access(AccessType.PROPERTY)

这样的构造可能吗?我可以想象entityId不能访问ExampleTypeB字段。我假设我需要重写ExampleTypeA的ID-getter和setter才能通过属性访问来访问该字段。 像这样:

@Entity
@Access(AccessType.FIELD)
public abstract class ExampleTypeA {

    @GeneratedValue
    @Id
    private long entityId;

    public long getEntityId() {
    return entityId;
    }

    public void setEntityId(final long entityId) {
    this.entityId = entityId;
    }

}

@Entity
@Access(AccessType.PROPERTY)
@Inheritance(strategy = InheritanceType.JOINED)
public class ExampleTypeB extends ExampleTypeA {

    @GeneratedValue
    @Id
    @Override
    public long getEntityId() {
    return super.getEntityId();
    }

    @Override
    public void setEntityId(final long entityId) {
    super.setEntityId(entityId);
    }

}

这是正确的方法吗?在类型层次结构中混合AccessType可能是代码异味,还是根本不可能?

0 个答案:

没有答案