java - 有没有办法将具有多个外键的列的表映射到 Spring Boot 中的特定实体
问题描述
我正在使用 imdb 数据集,需要一些帮助。
我有这个演员/导演表,其中 nconst 是表的主键,而 knownForTitles 是电影/系列表的外键。
演员/导演表
电影/系列表
c1 列是电影/系列表的主键。
这是我的 2 个实体
@Entity
@Table(name="moviesAndSeries")
@Data
public class SeriesAndMovies {
@Id
@Column(name="c1")
private String tconst;
@Column(name="c2")
private String titleType;
@Column(name="c3")
private String primaryTitle;
@Column(name="c4")
private String actualTitle;
@Column(name="c5")
private Integer isAdult;
@Column(name="c6")
private Integer startYear;
@Column(name="c7")
private Integer endYear;
@Column(name="c8")
private Integer runTimeMinutes;
@Column(name="c9")
private String genres;
public SeriesAndMovies() {
}
}
@Entity
@Table(name="data")
@Data
public class ActorsAndDirectors {
@Id
@Column(name="nconst")
private String id;
@Column(name="primaryName")
private String name;
@Column(name="birthYear")
private Integer birthYear;
@Column(name="deathYear")
private Integer deathYear;
@Column(name="primaryProfession")
private String profession;
@Column(name="knownForTitles")
private ??? popularTitles;
public ActorsAndDirectors() {
}
}
有没有办法使用 jpa 注释来映射它?
提前致谢
解决方案
数据集和数据库之间存在差异。即使数据集中的数据存储为表示值列表的字符串,您也可以将这些值转换为正确表中的条目。
将列映射为 id 列表在关系数据库中没有意义。正确的方法是在两个实体之间创建关联,使用一对多或(多对多):
@Entity
@Table(name="data")
@Data
public class ActorsAndDirectors {
...
@OneToMany
private Set<SeriesAndMovies> knownForTitles;
}
当您从数据集中读取数据时,您需要对其进行解析并将正确的值插入到数据库的正确表中。
推荐阅读
- javascript - Firestore 规则 get() 在模拟器中有效,但在应用程序中无效
- javascript - ReactJS 在 Symfony 项目中导入后会破坏代码
- mysql - 使用 Laravel 编写复杂的查询
- wso2 - 启动开发人员工作室 WSO2 Api 管理器时出错 (eclipse)
- livecode - LiveCode 圆角堆栈角
- npm - 为节点项目设置 npm 模块的自定义路径
- python-3.7 - Python我如何知道我的鼠标光标何时选择链接
- azure - Kubernetes部署azure函数时如何检索函数键
- python - 我应该怎么做才能排除我的程序读取文本文件中的空行但仍然包含空格
- angular - 当使用 observable 和 in memory 服务时,Stagger 和 Animation 不适用