Как лучше всего представить приведенные ниже таблицы с двунаправленной связью, где nodes
- сторона-владелец, использующая Spring Data / JPA? Я хочу сохранить nodes
с помощью node_node
и сохранить node_node
.
узлов таблица
node_node таблица
Вот что у меня есть на данный момент. Двунаправленная связь, при которой NodeNode
является стороной-владельцем, что означает, что когда я создаю, обновляю или удаляю элемент в parents
или children
из Node
, он не сохраняется. Когда я обновляю Node
, добавляя к parent
или children
, кажется, что он работает, но когда я обновляю путем удаления, он не работает. Мне нужно сохранить через NodeNode
, так как это сторона-владелец, но это слишком хлопотно, так как для этого потребуется сохранение до Node
и NodeNode
.
public class Node {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@OneToMany(mappedBy = "parent", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
private Set<NodeNode> parents;
@OneToMany(mappedBy = "child", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
private Set<NodeNode> children;
}
public class NodeNode {
@ManyToOne
@JoinColumn(name = "node_id_1")
private Node parent;
@ManyToOne
@JoinColumn(name = "node_id_2")
private Node child;
}
Цель - чтобы иметь возможность сохранить Node
с любыми изменениями в Node.parents
или Node.children
, а также NodeNode
.