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

标签 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实体开始查询,但我需要将Order与StateTransitionEvent连接起来。 查询看起来像这样:

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

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

最佳答案

你的问题不太清楚。 SELECT e FROM Order o JOIN stateTranstionEvent.transitionFrom tf 中的 e 是什么?

您无法从 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

关于hibernate - JPA/Hibernate - 单向 OneToOne 关联上的反向连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8354150/

相关文章:

java - 如何在JPA中定义多对多到自身?

php - 如何在特定用户登录时显示工厂

hibernate - 为什么 Hibernate 2 级静态显示的值与 CacheManager 不同

mysql - 带有连接表的 ManyToOne、oneToMany

java - Hibernate、id、oracle、序列

java - 为什么我的实体在两次调用后变得不受管理?

php - mysql join 显示复制结果

mysql - 交叉表 JOIN 错误

java - 如何为每个计划方法分配一个 Hibernate session

java - 使用查询更新数据库值或使用合并滚动列表?