2014-03-13 171 views
0

我一直在尋找谷歌一段時間沒有找到答案。JPA /休眠:JPA關係,篩選NULL值

我有兩個表:一個是我的,另一個是共享的。映射到實體,我有這種非常通用的情況:

Entity1 { 
    @Id Long id; 
    Long otherId; 
    Entity2 other; 
    ... 
} 

Entity2 { 
@Id Long id; 
Long otherId; 
Date invalidatingDate; 
... 
} 

這兩個otherId是一樣的,應該加入,但由於現場invalidatingDate我得到一個一對多的關係,應該是OneToOne。有沒有什麼辦法來解決與INVALIDATING_DATE IS NULL的關係?在Entity2中,給定otherId,WHERE INVALIDATING_DATE爲NULL將始終給出單個結果。 這樣的事情可能嗎?

謝謝。

回答

1

由於您使用的休眠,你可以做以下的(我不知道什麼是從你的問題的關係 - OneToOneManyToOne,但要注意@Where anootation):

Entity1 { 
    @Id Long id; 
    Long otherId; 

    @ManyToOne/@OneToOne 
    @Where(clause = "invalidatingDate = NULL") 
    Entity2 other; 
    ... 
} 
+0

謝謝你謝伊。我不知道@Where註釋,我搜索了作爲註釋屬性的位置......明天我會嘗試它。 真正的關係是OneToMany,因爲invalidatingDate計劃在給定的延遲時間內設置,但不確定是否會插入新的有效內容。這就是爲什麼我只需要invalidatingDate爲NULL的原因。沒有它,關係就是OneToOne。 – matticala

+0

@matticala,它工作? –

+0

對不起@ shay-elkayam我上週辛苦了。不,它沒有,我們「解決」了創建過濾視圖並將實體鏈接到它。 無論如何,謝謝你 – matticala