Выбор одного объекта из отношения «один ко многим» в Hibernate - PullRequest
0 голосов
/ 08 июня 2010

У меня есть две таблицы:

Job
job_id, <other data>

Job_Link
job_link_id, job_id, start_timestamp, end_timestamp, <other data>

Может быть несколько записей в Job_Link, указывающих один и тот же job_id с start_timestamp и end_timestamps, чтобы указать, когда эти записи считаются «текущими», гарантируется, что start_timestamp и end_timestamp не будут перекрываться.

У нас есть сущности для таблиц Job и Job_Link, и определение отношения «один ко многим» для загрузки всех ссылок job_link не будет проблемой. Однако мы хотели бы избежать этого и иметь единственный элемент job_link в объекте Job, который будет содержать только «текущий» объект Job_Link.

Есть ли способ добиться этого?

1 Ответ

0 голосов
/ 08 июня 2010

Это возможно с аннотацией @WhereJoinTable. В объекте Job добавьте ссылку @OneToOne точно так же, как вы определяете @OneToMany для объекта JobLink.

@OneToOne(...)
@WhereJoinTable(clause = "now() between start_timestamp and end_timestamp") // mysql
@WhereJoinTable(clause = "sysdate between start_timestamp and end_timestamp") // oracle ...
private JobLink jobLink

Недостатки: нарушает переносимость базы данных и JPA-провайдера

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