首页 > 解决方案 > 使用泛型休眠多对一双向

问题描述

我有一个需要在多个地方使用的实体类。所以我创建了一个带有泛型的类,如下所示

class Output<T> {
    ...
    private String referencedEntityName; 
    private T referencedEntity; 
    ...

}

我有另外两个类正在使用这个类

class Process {
     ...
     private List<Output<Process>> outputs;
     ...
}

另一个使用的类Output<T>

class Machine {
    ...
    private List<Output<Machine>> outputs; 
    ...

}

当存储在数据库中时,它应该如下所示

+----+------------------------+----------------------+
| id | referenced_entity_name | referenced_entity_id |
+----+------------------------+----------------------+
| 1  | Process                | 123                  |
+----+------------------------+----------------------+
| 2  | Process                | 234                  |
+----+------------------------+----------------------+
| 3  | Machine                | 345                  |
+----+------------------------+----------------------+

我如何实现这一目标?

PS 这不完全是这样的继承问题。虽然它可以使用接口解决方案来解决,DiscriminatorValue但我不确定。

在这里,两个实体之间存在关系,一个实体在其他几个实体中被引用。我认为这应该通过使用泛型来明确。此外,可以通过保持相同的关系以其他方式设计此解决方案。我也对此持开放态度。

标签: javadatabasehibernatejpaorm

解决方案


阅读 JPA 中的继承。使用继承策略 SINGLE_TABLE 您将获得与您发布的完全相同的表格。请参阅https://en.wikibooks.org/wiki/Java_Persistence/Inheritance#Example_single_table_inheritance_table_in_database


推荐阅读