Hibernate Многие к одному двунаправленные с использованием дженериков - PullRequest
0 голосов
/ 06 марта 2019

У меня есть класс сущностей, который мне нужно использовать в нескольких местах.Итак, я создал класс с обобщениями, как показано ниже

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 Это не совсем проблема наследования, как this .Хотя это можно решить с помощью интерфейсного решения, такого как DiscriminatorValue, но я не уверен.

Здесь существует связь между двумя сущностями, одна сущность упоминается в нескольких других сущностях.Я думаю, что это должно быть ясно с использованием дженериков.Кроме того, это решение может быть разработано другим способом, поддерживая те же отношения.Я тоже открыт для этого.

1 Ответ

0 голосов
/ 06 марта 2019

Читайте о наследовании в JPA.С помощью стратегии наследования SINGLE_TABLE вы получите таблицу, точно такую ​​же, как вы отправили .Смотри https://en.wikibooks.org/wiki/Java_Persistence/Inheritance#Example_single_table_inheritance_table_in_database

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...