我有一个层次聚类可视化表dataset_pair_visualization
:
+--------------+--------------+-------+------+
| dataset_1_fk | dataset_2_fk | image | link |
+--------------+--------------+-------+------+
表中的每一行都有两个外键,分别指向dataset
表中的两个不同行。我如何使用 Hibernate 的注释对此进行建模?关系是一对一还是一对多?我不需要 Dataset
实例的 Set
或 List
。我想引用两个特定的数据集。
我的尝试:
DatasetPairVisualization.java
public class DatasetPairVisualization {
...
@OneToOne
@JoinColumn(name = "dataset_1_fk")
private Dataset dataset1;
@OneToOne
@JoinColumn(name = "dataset_2_fk")
private Dataset dataset2;
...
Dataset.java
public class Dataset {
...
// But one Dataset should map to one DatasetPairVisualization
// What should this look like? "dataset" is obviously wrong,
// since the properties are "dataset1" and "dataset2"
@OneToOne(mappedBy = "dataset")
private DatasetPairVisualization datasetPairVisualization1;
...
最佳答案
您有一个“ManyToOne”关系,其中“Many”(确切地说是两个)Dataset
与“”相关一个'DatasetPairVisualization
。所以你必须这样映射它们:
public class DatasetPairVisualization {
...
@ManyToOne
@JoinColumn(name = "dataset_1_fk")
private Dataset dataset1;
@ManyToOne
@JoinColumn(name = "dataset_2_fk")
private Dataset dataset2;
...
在数据库中对“ManyToOne”进行建模的常用方法是使用从 Dataset
到 DatasetPairVisualization
的外键。但由于您在另一个表中有 FK,并且它们仅限于出现两次,因此我没有看到进行双向映射的正确方法。
如果能够导航从 Dataset
到 DatasetPairVisualization
的关系不是至关重要的,我会保持原样,并且不在 Dataset
实体中声明任何映射。
关于java - 如何在 Hibernate 中对相同的两个表之间的两个一对一关系进行建模?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33882663/