【问题标题】:Mapping two pairs of elements from the same tables using spirng JPA使用spring JPA从同一个表中映射两对元素
【发布时间】: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


    【解决方案1】:

    好的,就在我发布我的问题之后,我明白我做错了什么。我不得不简单地重命名作为连接列效果的列

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 2021-09-15
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多