2 атрибута в таблице, сопоставленной атрибутом справочной таблицы - PullRequest
0 голосов
/ 19 сентября 2011

Мне нужна ваша помощь, пожалуйста.

Я пытаюсь сопоставить свои объекты с помощью hibernate и jpa.

У меня есть 2 таблицы, справочная и личная (например)

      the attributs of reference are ( id_ref, description_ref)
      the attributes of person are : id_person,addresse,colorEyes,jobetc).

и address это строка, но все остальные - int. теперь значения 2 int в colorEyes и job ссылаются на 2 различных int в справочной таблице с

      person.colorEyes=reference.id_ref  and person.job=reference.id_ref , those  id_ref are not the same for colorEyes and job.

Я хотел бы отобразить эти отношения между справочной и персональной таблицами, возможно ли это сделать с помощью hibernate и jpa annotation? я должен поставить два отношения типа oneToOne? даже если оба атрибута связаны с таблицей ссылок? Я нашел аннотацию selectedtable, но они всегда говорят о другой таблице, которая не всегда одинакова между двумя атрибутами.

Если это невозможно, в любом случае использовать псевдоним? или я должен перейти на HQL?

все будет очень полезно. Танки

1 Ответ

1 голос
/ 19 сентября 2011

Я бы не подумал, что у Hibernate возникнут какие-либо проблемы со следующим ...

@ManyToOne( ...)
@JoinColumn(name="colorEyes")
public Reference getColorEyes() {
    return company;
}

@ManyToOne( ...)
@JoinColumn(name="jobetc")
public Reference getJobEtc() {
    return company;
}

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

Тем не менее, вы можете подумать о том, чтобы разделить таблицу ссылок на несколько таблиц, по одной для каждого типа данных. Это было бы лучше формы DB Третья нормальная форма

Это также сделает ваш код более читабельным, поскольку у вас будут разные классы для хранения EyeColor и JobEtc.

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