Я уже некоторое время изучаю наследование 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
в своем теле. Но также я хочу разрешить ситуации, когда дочерний класс пуст:
@Entity
public class MountainEntity extends MountainEntityBase implements Serializable {
}
Заранее благодарим за любую помощь с этим.