Я уже некоторое время изучаю наследование JPA / Hibernate @Entity
и, похоже, не могу найти ничего, что касалось бы того, чего я пытаюсь достичь.
По сути, я хочу иметь возможность определить@Entity
со всеми сопоставлениями столбцов и таблиц, как требуется.Затем я хочу иметь возможность расширять @Entity
в нескольких разных местах с помощью различных наборов @Transient
методов, определенных в теле каждого "подобъекта".Это основной пример того, чего я пытаюсь достичь, но пока безуспешно:
@Entity
@Table(name = "mountain")
public class MountainEntityBase implements Serializable {
public Integer mountainId = 0;
public Integer height = 0;
public List<ExplorerEntityBase> explorers = new ArrayList<ExplorerEntityBase>();
@Id
@GeneratedValue
@Column(name = "mountain_id")
public Integer getMountainId() { return mountainId; }
public void setMountainId(Integer mountainId) { this.mountainId = mountainId; }
@Column(name="height")
public String getHeight() { return height; }
public void setHeight(String height) { this.height = height; }
@OneToMany(mappedBy="mountainId")
public List<ExplorerEntityBase> getExplorers() { return this.explorers; }
public void setExplorers(List<ExplorerEntityBase> explorers) { this.explorers = explorers; }
}
.
@Entity
public class MountainEntity extends MountainEntityBase implements Serializable {
public List<MountainEntity> allMountainsExploredBy = new ArrayList<MountainEntity>();
@Transient
public List<MountianEntity> getAllMountainsExploredBy(String explorerName){
// Implementation
}
}
Таким образом, любой расширенный класс будет определять только @Transient
s вего тело.Но я также хочу учесть ситуации, когда дочерний класс пуст:
@Entity
public class MountainEntity extends MountainEntityBase implements Serializable {
}
Заранее благодарен за любую помощь в этом.