直接加入 JPA 或 HIBERNATE

Posted

技术标签:

【中文标题】直接加入 JPA 或 HIBERNATE【英文标题】:straight_join in JPA or HIBERNATE 【发布时间】:2015-03-03 04:41:02 【问题描述】:

如何在hibernate/jpa中使用select straight_join ... from ...

【问题讨论】:

什么是“straight_join”?你读过定义 JPQL 的 JPA 文档吗? 【参考方案1】:

JPQL/JPA 没有 direct_join。

您需要在 NativeQuery 中使用它。

entityManager.createNativeQuery(...);

【讨论】:

【参考方案2】:

在 Hibernate 5.2.12 和 mysql 版本 8 中应该可以使用优化器提示 JOIN_FIXED_ORDER(与 STRAIGHT_JOIN 效果相同) 更多信息可在链接下获得:

吉拉票: https://hibernate.atlassian.net/browse/HHH-11906

Hibernate 代码更改允许这样做: https://github.com/hibernate/hibernate-orm/commit/72506a6eacc367297a3205f6e1fec7ccbc153799

MySQL 优化器提示的文档: https://dev.mysql.com/doc/refman/8.0/en/optimizer-hints.html

【讨论】:

以上是关于直接加入 JPA 或 HIBERNATE的主要内容,如果未能解决你的问题,请参考以下文章

JPA 急切未加入

不加入子表的 JPA (@OneToMany) 查询

Hibernate JPA,加入多个表

Hibernate JPA 加入继承

用JPA加入两个表

JPA 加入专栏