Действительно ли возможно добавить аннотацию JPA к переменным суперэкземпляра класса?

Я создаю объекты, которые являются тем же для двух различных таблиц. В порядке действительно представляют в виде таблицы отображения, и т.д. отличающиеся для этих двух объектов, но только имеют остальную часть кода в одном месте - абстрактный суперкласс. Лучшая вещь состояла бы в том, чтобы смочь аннотировать универсальный материал, такой как имена столбцов (начиная с желания быть идентичной) в суперклассе, но это не работает, потому что аннотации JPA не наследованы дочерними классами. Вот пример:

public abstract class MyAbstractEntity {

  @Column(name="PROPERTY") //This will not be inherited and is therefore useless here
  protected String property;


  public String getProperty() {
    return this.property;
  }

  //setters, hashCode, equals etc. methods
}

Который я хотел бы наследовать и только указать определенный для ребенка материал, как аннотации:

@Entity
@Table(name="MY_ENTITY_TABLE")
public class MyEntity extends MyAbstractEntity {

  //This will not work since this field does not override the super class field, thus the setters and getters break.
  @Column(name="PROPERTY") 
  protected String property;

}

Какие-либо идеи или я должны будем создать поля, методы считывания и методы set в дочерних классах?

Спасибо, крис

26
задан Kristofer 21 May 2010 в 14:41
поделиться

3 ответа

Возможно, вы захотите аннотировать MyAbstractEntity с помощью класса @MappedSuperclass , чтобы спящий режим импортировал конфигурацию MyAbstractEntity в дочерний элемент, и вам не пришлось бы переопределять поле, просто используйте родительский. Эта аннотация является сигналом к ​​переходу в спящий режим о том, что он также должен проверить родительский класс. В противном случае он предполагает, что может его игнорировать.

26
ответ дан 28 November 2019 в 07:18
поделиться

Отметьте суперкласс как

@MappedSuperclass

и удалите свойство из дочернего класса.

3
ответ дан 28 November 2019 в 07:18
поделиться

Аннотирование базового класса с помощью @MappedSuperclass должно делать именно то, что вы хотите.

2
ответ дан 28 November 2019 в 07:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: