Могу ли я присоединиться к employee к code с помощью поля кода В таблице сотрудников и жестко -кодированном значении (например, emp_type ) вместо избыточного столбца?
Если мой < Em> Сотрудник класс/таблица действительно имела этот избыточный столбец, я бы присоединился к нему так:
Код: Выделить всё
@JoinColumns({
@JoinColumn(name = "EMP_TYPE_CODE", referencedColumnName = "CODE"),
@JoinColumn(name = "DOMAIN", referencedColumnName = "DOMAIN)})
@ManyToOne(optional = false)
private Code sharedStatute;
< /code>
Но я действительно не хочу иметь этот дополнительный столбец в DB и в классе, потому что он всегда будет одинаковым. < /p>
То, что я пытаюсь достичь, было бы эквивалентно следующим в SQL: < /p>
SELECT e.emp_id, e.first_name, e.last_name, c.description as emp_type
FROM Employee e JOIN Code c
ON e.emp_type_code = c.code
WHERE c.domain = 'EMP_TYPE'
Код: Выделить всё
SELECT e.emp_id, e.first_name, e.last_name, c.description as emp_type
FROM Employee e JOIN Code c
ON e.emp_type_code = c.code
AND e.domain = c.domain
Некоторые из вас могут сказать что-то вроде «почему бы не создать отдельный таблица поиска для каждого кода», но я думаю, что это ужасная идея, которая приводит к загромождению таблиц БД и соответствующих объектов приложения. Гораздо лучше иметь единую таблицу поиска кода, разделенную по типу кода (или домену).
Подробнее здесь: https://stackoverflow.com/questions/278 ... oded-value
Мобильная версия