【问题标题】:Hibernate Many to one bidirectional using generics使用泛型休眠多对一双向
【发布时间】:2023-03-17 20:44:01
【问题描述】:

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

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

}

我还有另外两个班级正在使用这个班级

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

另一个使用Output&lt;T&gt;的类是

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 这样的接口解决方案来解决,但我不确定。

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

【问题讨论】:

  • 请把问题说清楚,标题难以理解,多对一双向?
  • @XtremeBaumer 我认为这不是重复的。我在这里没有使用继承。我正在使用与泛型的关系
  • @MithatKonuk 是的。与泛型的多对一双向关系
  • Thisthat。还有2个问题已经处理了hibernate中的泛型。看起来你肯定需要@Any 关系

标签: java database hibernate jpa orm


【解决方案1】:

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

【讨论】:

  • 我认为这不是继承问题。我正在尝试使用泛型,以便我可以有效地使用此代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多