2011-12-02 101 views
3

This link顯示單向ManyToOne如何可以從「關聯的另一側」加入。
這是否也適用於OneToOne協會?JPA /休眠 - 反向加入單向OneToOne關聯?

在我的情況下,我有StateTransitionEvent實體,它與OrderStateEntity具有單向的一對一關聯。我不想在對象層次上建立雙向關係,OrderState類不需要知道轉換。

@Entity 
class StateTransitionEvent { 
    @OneToOne 
    private Order transitionFrom; 

    @OneToOne 
    private Order transTo; 
} 

@Entity 
class OrderState { 
    // no association to StateTransitionEvent 
} 

由於訂單有許多單向的關係,它希望開始從Order實體的查詢,但我需要加入與StateTransitionEvent訂單。 查詢看起來是這樣的:

SELECT E從命令○JOIN stateTranstionEvent.transitionFrom TF ...

這是可能的,還是我必須做出對對象級別的關聯雙向?

回答

1

你的問題不是很清楚。什麼是e,在SELECT e FROM Order o JOIN stateTranstionEvent.transitionFrom tf

您不能從Order到StateTransitionEvent(因爲從Order到StateTransitionEvent沒有關聯)。但是你可以在其他方向加入,您可以選擇的順序或事件:

select e from StateTransitionEvent e join e.transitionFrom tf 
where e.foo = :foo and tf.bar = :bar 

select tf from StateTransitionEvent e join e.transitionFrom tf 
where e.foo = :foo and tf.bar = :bar