使用泛型将多对多休眠

时间:2019-03-06 12:16:55

标签: java database hibernate jpa orm

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

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                  |
+----+------------------------+----------------------+

我该如何实现?

P。 S。这并不是像this这样的继承问题。尽管可以使用DiscriminatorValue之类的接口解决方案来解决,但我不确定。

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

1 个答案:

答案 0 :(得分:0)

了解有关JPA中的继承的信息。使用继承策略SINGLE_TABLE,您将获得 与您发布的表完全相同的表 。参见https://en.wikibooks.org/wiki/Java_Persistence/Inheritance#Example_single_table_inheritance_table_in_database