Предположим, у меня есть следующая таблица:
PARAMETER
- NAME varchar2(10)
- TABLE_NAME varchar2(50)
- REF_TABLE_ID number(10)
- VALUE varchar2(100)
Эта таблица содержит значения параметров для других таблиц, например, если у меня есть таблица
по имени EMPLOYEE и я хочу добавить параметр сотруднику с идентификатором 1
Таблица PARAMETER будет иметь следующую строку:
insert into PARAMETER (NAME, TABLE_NAME, REF_TABLE_ID, VALUE) values ('PARAM1', 'EMPLOYEE', 1, 'Value of PARAM1');
Конечно, это не навязывает никаких ограничений целостности, но эту таблицу PARAMETER нельзя изменить.
Теперь я хочу отобразить эту таблицу PARAMETER в моем СОТРУДНИКЕ сущности, мне нужно что-то заменить (@SomeAnnotation)
public class Employee {
@OneToMany
@JoinColumn(name="REF_TABLE_ID")
@SomeAnnotation("and table_name = 'EMPLOYEE'")
private List<Parameter> parameters;
... etc
}
Сейчас я использую аннотацию @PostLoad для загрузки всех параметров PARAMETER, связанных с этой сущностью, но я бы предпочел, если бы мог
как-нибудь сопоставить таблицу параметров.
Другая идея, которая у меня возникла, - создать VIEW, где я фильтрую таблицу PARAMETER для TABLE_NAME = 'EMPLOYEE', но это означает, что
что мне нужно будет создать представление для всех моих таблиц в БД и их слишком много.
есть мысли?