Я создаю объекты, которые являются тем же для двух различных таблиц. В порядке действительно представляют в виде таблицы отображения, и т.д. отличающиеся для этих двух объектов, но только имеют остальную часть кода в одном месте - абстрактный суперкласс. Лучшая вещь состояла бы в том, чтобы смочь аннотировать универсальный материал, такой как имена столбцов (начиная с желания быть идентичной) в суперклассе, но это не работает, потому что аннотации 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 в дочерних классах?
Спасибо, крис
Возможно, вы захотите аннотировать MyAbstractEntity с помощью класса @MappedSuperclass
, чтобы спящий режим импортировал конфигурацию MyAbstractEntity в дочерний элемент, и вам не пришлось бы переопределять поле, просто используйте родительский. Эта аннотация является сигналом к переходу в спящий режим о том, что он также должен проверить родительский класс. В противном случае он предполагает, что может его игнорировать.
Отметьте суперкласс как
@MappedSuperclass
и удалите свойство из дочернего класса.
Аннотирование базового класса с помощью @MappedSuperclass
должно делать именно то, что вы хотите.