2010-06-08 52 views
0

一個一對多的關係選擇一個對象,我有兩個表:把Hibernate

Job 
job_id, <other data> 

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

有可能在JOB_LINK多個記錄指定與start_timestamp和end_timestamps相同JOB_ID指示時,這些記錄視爲「當前」,則保證start_timestamp和end_timestamp不會重疊。

我們有Job和Job_Link表的實體,並且定義一個一對多關係來加載所有job_links不會是一個問題。但是,我們希望避免這種情況,並且在Job實體中只包含一個job_link項目,該項目將僅包含「當前」Job_Link對象。

有沒有什麼辦法可以達到目的?

回答

0

使用@WhereJoinTable註解是可能的。在Job實體中添加一個@OneToOne鏈接,就像您在JobLink對象上定義@OneToMany一樣。

@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提供程序的可移植性