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