@ManyToOne не заполняет поле родительского идентификатора - PullRequest
0 голосов
/ 05 октября 2018

У меня двунаправленные отношения «многие-к-одному» между родительским и дочерним объектом.Проблема в том, что когда я сохраняю ребенка, parent_id не сохраняется.Другие поля в порядке, но parent_id остаются на NULL.Я использую Spring Data JPA с Hibernate и mapstruct для преобразования между сущностью и dto, если это может помочь.

Java-файлы следующие:

@Entity
@Table(name = "Parent")
public class ParentEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;


    @OneToMany (fetch = FetchType.LAZY, mappedBy="parent_entity", cascade = { CascadeType.ALL })
    private List<Child> children;

}


@Entity
@Table(name = "Child")
public class ChildEntity implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @ManyToOne(optional = true)
    @JoinColumn(nullable = true, name = "parent_entity_id", insertable = false, updatable = false)
    private Parent parent_entity;
}

Я уже попробовал несколько ответов от SO, но пока безрезультатно.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Поскольку вы используете двунаправленные отношения, теперь вы обязаны установить родителя для своего ребенка.И удалить insertable = false.

0 голосов
/ 05 октября 2018

Насколько я знаю.Вы должны добавить друг друга в родительском и дочернем.Похоже, что только добавление детей в список не работает.

Попробуйте, и посмотрите, решит ли это проблему.

...