не понимаю как его построить и отображать (там должны участвовать 4 типа - entity) из БД нужно брать объекты короче, Штатное расписание нужно сделать у нас есть сущности(Предприятия(Enterprice), Отделы(Department), Штатное расписания(PersonnelShedule), Элементы Штатного расписания(PersonnelSheduleItem) PersonnelSheduleItem - у него есть поля типа EmployeePosition, и count - типа int и вот они все хранятся как сущности в БД, когда мы должны отобразить это клиенту нам нужно(по крайней мере я так считаю) использовать JTreeTable в иерархическом виде (корень Предприятие у него список Отделов а у отдела есть список PersonnelSheduleItem где указывается сколько человек мы можем принять на работу) public class Enterprice implements Serializable { protected static final long serialVersionUID = 1L; /** * <p>Идентификационный номер объекта, уникальный <p>тип: Long * <p>Генерируется автоматически */ @Id @GeneratedValue(strategy = GenerationType.AUTO) protected Long id; /** * Название предприятия */ protected String enterpriceName; /** * <p>Если в предприятие имеются дочерние предприятия <p> Отношение * один-к-многим */ @OneToMany(mappedBy = "parentEnterprice", fetch = FetchType.LAZY) protected List<Enterprice> childs; /** * <p>Предприятие имеет подразделения, службы, отделы <p> Отношение * Один-к-Многим */ @OneToMany(mappedBy = "enterprice", fetch = FetchType.EAGER) protected List<Division> divisions; /** * <p> Если предприятие является родительским предприятием <p>Отношение * Многие-К-Одному */ @ManyToOne protected Enterprice parentEnterprice; это был Enterprice Теперь Division public class Division implements Serializable { protected static final long serialVersionUID = 1L; /** * * <p>Идентификационный номер объекта, уникальный <p>тип: Long * <p>Генерируется автоматически * */ @Id @GeneratedValue(strategy = GenerationType.AUTO) protected Long id; /** * Название подразделения, департамента, службы */ protected String divisionName; /** * <p>Список дочерних подразделений <p>Отношение один-к-многим * */ @OneToMany(mappedBy = "parentDivision") protected List<Division> childDivisions; /** * <p>Предприятие к которому относится данное подразделение <p>Отношение * многие-к-одному */ @ManyToOne(fetch= FetchType.LAZY) protected Enterprice enterprice; /** * <p>родительское подразделение к которому относится данне подразделение * <p>Отношение многие-к-одному * */ @ManyToOne protected Division parentDivision; @Entity public class PersonnelScheduleItem extends DocumentItem { @ManyToOne private EmployeePosition position; @ManyToOne private Division division; один элемент штатного расписания а это само штатное расписание @Entity public class PersonnelSchedule extends Document { public void addPersonnelScheduleItems(PersonnelScheduleItem documentItem) { super.getDocumentItems().add(documentItem); }