【发布时间】:2021-05-25 03:42:26
【问题描述】:
我想为图表创建一个 sql 数据库。我的想法是为 Graph、node 和 edge 创建一个表。每个图都有一个节点和边列表。每个节点都会有进入该节点的边列表和从它出来的边列表。每个边缘都有它从哪个节点出来以及它进入哪个节点的信息。我收到一个错误 - “实体映射中的重复列:graph.data.entity.Edge 列:node_id(应该使用 insert="false" update="false")进行映射”。我不应该加入 node_id 列?我应该使用 insert="false" update="false" 将@JoinColumn 用于 toNode 时?
我的代码:
Edge.java
@Entity
public class Edge extends AbstractEntity {
@NotNull
@ManyToOne
@JoinColumn(name = "node_id")
private Node fromNode;
@NotNull
@ManyToOne
@JoinColumn(name = "node_id")
private Node toNode;
@NotNull
@ManyToOne
@JoinColumn(name = "graph_id")
private Graph graph;
@NotNull
private int weight;
Node.java
@Entity
public class Node extends AbstractEntity {
private String name;
@OneToMany(mappedBy = "fromNode", fetch = FetchType.EAGER)
private List<Edge> outEdges = new ArrayList<>();
@OneToMany(mappedBy = "toNode", fetch = FetchType.EAGER)
private List<Edge> inEdges = new ArrayList<>();
@ManyToOne
@JoinColumn(name = "graph_id")
private Graph graph;
Graph.java
@Entity
public class Graph extends AbstractEntity {
private String name;
@OneToMany(mappedBy = "graph", fetch = FetchType.EAGER)
private List<Node> nodes = new ArrayList<>();
@OneToMany(mappedBy = "graph", fetch = FetchType.EAGER)
private List<Edge> edges = new ArrayList<>();
'''
【问题讨论】:
标签: java spring database spring-data-jpa spring-jdbc