jpa - 线和点的 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;
}
解决方案
推荐阅读
- php - 在 eloquent 的关系结果中添加额外的列
- ios - 你如何归档使用 Flutter 创建的 Runner.app?
- python - Jinja 2 - 过滤器优化(日期时间格式化程序)
- python - 如何访问序列化程序中的模型选择并获取 json 视图
- parameters - /SL5、/SPAWNWND、/NOTIFYWND 和 /DEBUGWND 参数在 Inno Setup 中是什么意思?
- r - 不确定数据表分配/管道在 R 中的工作方式
- multithreading - 在单独的线程中填充 ComboBox
- python - 在数据框熊猫的一列上应用唯一/不同后获取其他列
- javascript - 基于Javascript中的内部数组对外部对象进行排序
- buffer - 如何使用缓冲区制作 PNG(8 位索引颜色)?获取“压缩头校验和失败”