JPA / Hibernate - 单向OneToOne关联的反向连接?

时间:2011-12-02 09:20:39

标签: hibernate jpa join

This link显示了单向ManyToOne如何从“关联的另一端”加入。
这对OneToOne关联也有效吗?

就我而言,我有StateTransitionEvent实体与OrderStateEntity具有单向一对一关联。我不想在对象级别上建立双向关系,OrderState类不需要知道转换。

@Entity
class StateTransitionEvent {
    @OneToOne
    private Order transitionFrom;

    @OneToOne
    private Order transTo;
}

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

由于Order有许多单向关系,因此它希望从Order实体启动查询,但我需要使用StateTransitionEvent加入Order。 查询看起来像:

  

SELECT e FROM Order o JOIN stateTranstionEvent.transitionFrom tf ...

这可能吗,还是我必须在对象级别上进行双向关联?

1 个答案:

答案 0 :(得分: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