0

Требуется сделать web-приложение что-то вроде проводника Как сделать связь родителя и ребенка?

    @Entity
    @Table(name = "directory")
    public class Directory {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private String name;
        private String parent;
        private String child; 

Подумал о таком коде, но понял, что не смогу его реализовать, т.к у ребенка тоже может быть ребенок. Как быть?

Способ 2:

@Entity
@Table(name = "PARENT")
public class Parent {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
    private Set<Child> child = new HashSet<Child>();
}

@Entity
@Table(name="CHILD")
public class Child {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Integer id;
    private String name;
    @ManyToOne(optional = false)
    @JoinColumn(name = "parent_ID")
    private Parent parent;
}
Igor R.
  • 552
  • я бы сделал класс Directory и в этом классе List subDirectories (потому что у директории может быть >1 чайлда). На какой СУБД вы это реализовываете ? – Valentyn Anzhurov Sep 06 '19 at 13:54
  • Здравствуйте,использую MySQL – 666kirillka Sep 06 '19 at 14:00
  • Лучше бы конечно какую-нибудь, чтобы была как JSON (например, MongoDB). Ну да ладно. Я бы сделал 2 таблицы: 1. directories, 2. directories_rel (от слова relation). в первой хранил бы сами директории (id + какую-нибудь информацию о них), во второй хранил бы parent_id и child_id. – Valentyn Anzhurov Sep 06 '19 at 14:05
  • Что касается организации entity, то с помощью соответствующих аннотаци можно собрать subDirectories. Уверен, что и parent можно найти – Valentyn Anzhurov Sep 06 '19 at 14:08
  • сам не очень люблю, когда кидают доку, т. к. лень искать))) Но в даном случае вы 100% найдете здесь нужные аннотации -> https://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/ – Valentyn Anzhurov Sep 06 '19 at 14:09
  • скажите,а такой способ подойдет? https://ibb.co/L10Gyy8 https://ibb.co/LhJMfhs – 666kirillka Sep 06 '19 at 14:20
  • У меня там ничего не грузится – Valentyn Anzhurov Sep 06 '19 at 14:23
  • добавил в пост как способ 2 – 666kirillka Sep 06 '19 at 14:27
  • Рассмотрите один из вариантов тут — https://ru.stackoverflow.com/a/993199/275232 – Antonio112009 Sep 06 '19 at 14:28
  • 2ой способ имеет место быть, но я бы хранил все 1им классом, где есть и список детей и родитель – Valentyn Anzhurov Sep 06 '19 at 14:31
  • Спасибо большое за ответы) – 666kirillka Sep 06 '19 at 14:33

0 Answers0