首页 > 解决方案 > 线和点的 JPA 表示

问题描述

我对使用 JPA 比较陌生,但我花了很多时间研究注释以及如何使用它们。我正在开发一个应用程序,其中有路径、线段和点。每条路径有 1 个或多个线段。每个线段都有一个序号、起点 (X/Y) 和终点 (X/Y)。积分可以重复使用(要求)。也就是说,一个点可以属于一个或多个线段。点重用似乎是这里的痛点。我希望的是一种应用注释的方式,这样一旦所有引用给定点的线段都被删除,该点就会被自动删除。下面是我正在尝试做的简化版本。如果没有办法指定这种行为,那么我 我必须做一些事情,在每个线段删除后发出自定义 HQL 删除查询以删除不再引用的任何点。可行,但似乎应该有更好的方法。如果有人能指出我正确的方向,将不胜感激。谢谢。

@Entity
@Table(name = "path_tbl")
public class Path
{
    @Id
    private String id;
    @OneToMany(mappedBy = "path", cascade = CascadeType.ALL, orphanRemoval = true)
    @OrderBy("sequence_number ASC")
    private List<PathSegment> lines = new ArrayList<>();
}
@Entity
@Table(name = "line_tbl")
public class PathSegment {
    @Id
    private String id;
    @JsonIgnore
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "path_id")
    private Path path;
    @OneToOne
    @JoinColumn(name="start_point")
    private Waypoint start;
    @OneToOne
    @JoinColumn(name="end_point")
    private Waypoint end;
    @Column(name="sequence_number")
    private int sequenceNumber;
}
@Entity
@Table(name = "waypoint_tbl")
public class Waypoint {
    @Id
    private String id;
    private int x;
    private int y;
}

标签: jpa

解决方案


推荐阅读