Spring Boot JPA Hibernate Родитель / Ребенок / Внук - PullRequest
0 голосов
/ 21 февраля 2019

При добавлении нового внука в дочерний элемент родителя добавляемый объект заменяется новым объектом в коллекции.Те же значения свойств, и они сохраняются в порядке, но исходный объект, который I new'd не содержит идентификатора и был удален из коллекции.Даже после того, как я добавил Дитя, установив this и затем добавив внука в коллекцию.

Мне нужен объект, чтобы получить идентификатор, чтобы я мог отобразить и вернуть его вызывающей стороне.

@Entity
@Table(name = "parents")
public class Parent {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @NotNull
    private long id;

    @NotNull
    private String name;


    @OneToMany(mappedBy = "parent", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private Set<ChildA> childrenA;
}



@Entity
@Table(name = "children_a")
public class ChildA {
    @NotNull
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Id
    private long id;

    @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JoinColumn(name = "parent_id", nullable = false)
    private Parent parent;

    @OneToMany(mappedBy = "childA", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private Set<ChildB> childrenB;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }


    public Parent getParent() {
        return parent;
    }

    public void setParent(Parent parent) {
        this.parent = parent;
    }

    public void addChildB(ChildB childb) {
        childb.setChildA(this);
        childrenB.add(childB);
    }

    public Set<ChildB> getChildrenB() {
        return childrenB;
    }

    public void setChildrenB(Set<ChildB> childrenB) {
        this.childrenB = childrenB;
    }
}


@Entity
@Table(name = "children_b")
public class ChildB implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "id")
    private long id;


    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "child_a_id")
    private ChildA chiuldA;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public ChildA getChildA() {
        return childA;
    }

    public void setChildA(ChildA childA) {
        this.childA = childA;
    }

}

1 Ответ

0 голосов
/ 22 февраля 2019

Я столкнулся со своими дочерними сущностями, которые рассматриваются как Слияния, поскольку сохранение Родителя через репозиторий JPA является слиянием.Похоже, дизайн

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...