JPA @Entity Inheritance

Я уже некоторое время изучаю наследование 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 {
}

Заранее благодарим за любую помощь с этим.

6
задан Daniel Gray 3 November 2016 в 10:18
поделиться