JPA, смешивающий тип доступа в иерархии типов - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть две сущности 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 s 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 в иерархии типов может быть запахом кода или даже невозможным?

...