Возможно ли это в Hibernate? и как? - PullRequest
2 голосов
/ 28 февраля 2012

Я ищу решение для извлечения данных из 2 разных таблиц, основанных на типе таблицы и ссылочном ключе, пожалуйста, посмотрите на следующую структуру таблицы и классы сущностей.

Таблица

1**Type**
    (ID, TableName // Value for TableName can be 'TableA' or 'TableB')

2**TableA**
  ( ID, NameForA)

3**TableB**
   (ID, NameForB)

4**TableMain**
   (ID, Name, TypeID (foreign key of Type table), DataID (can be reference of TableA or TableB))

Структура классов сущностей

Class Abstract Model{ int ID; } // Model is base class, holds data of ID field and is parent for all entity classes

Class Type extends Model{String TableName;}

Class TableA extends Model{String NameForA;}

Class TableB extends Model{String NameForB;}

Class TableMain extends Model{
String Name;
Type type;
Model data; // can be TableA class or TableB based on Type
}

Что я ищу, так это то, что у класса TableMain есть поле 'data', это может быть объект класса TableA или TableB, решение будет основано на 'Type', который содержит tableName, если имя таблицы равно 'TableA', тогда данные будут экземпляром класса TableA или если tableName равно «TableB», данные будут экземпляром TableB.

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

Кто-нибудь может мне помочь, как заставить его работать в спящем режиме или каким-либо другим способом? или возможно заполнить данные через спящий режим автоматически.

Спасибо.

1 Ответ

1 голос
/ 28 февраля 2012

Используя PostgreSQL, вы можете легко наследовать таблицы базы данных:

Create Table model(...);
Create Table type(...) inherits model; 

Для соответствия Java

public class Model{...}
public class Type extends Model{...}

(Попробуйте eNexus DB Designer ( enexus dbd )также.)

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