mysql - LEFT JOIN 与 ON - Spring 中的 JPA 存储库

标签 mysql spring jpa repository left-join

我正在开发一个 Spring Boot 应用程序,并在我的存储库中努力处理 SQL 查询。 该查询应选择从未在我的 Web 应用程序中发帖的员工的所有 ID。

在 MySQL Workbench 中,以下语句工作正常,我得到了预期的结果。

SELECT e.id FROM employees e LEFT JOIN posts p ON p.owner_id = e.id WHERE p.owner_id IS NULL

但我不知道如何在我的 PostRepository 中编写它,它扩展了 Spring 的 JpaRepository 。 这是错误信息

o.h.hql.internal.ast.ErrorCounter : Invalid path: 'p.owner_id

这是我在存储库中使用的语句。

@Query("SELECT e FROM employees e LEFT JOIN p.posts p ON p.owner_id = e.id WHERE p.owner_id IS NULL")
List<Employee> getEmployeeIdsNeverVoted();

我不知道如何使用“ON”并为其定义路径。

最佳答案

您的查询和字符串在您要加入的表上看起来不一样。您的查询中有“posts p”,但字符串查询中有 p.posts p,查询中有 e.id,但字符串查询中有 e:

SELECT e.id FROM employees e LEFT JOIN posts p ON p.owner_id = e.id WHERE p.owner_id IS NULL
@Query("SELECT e FROM employees e LEFT JOIN p.posts p ON p.owner_id = e.id WHERE p.owner_id IS NULL")

关于mysql - LEFT JOIN 与 ON - Spring 中的 JPA 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35723862/

相关文章:

java - JPA 将 java.io.File 或 java.nio.file.Path 对象映射到 STRING 列

java - 如何使用Jboss7设置hibernate3?

java - 烧烤条形码生成器不使用网络应用程序显示条形码编号

mysql - 数据应根据查找表进行替换

php - MySQL AJAX PHP 通知表布局

java - Spring 4.0.X-beans 中 springDefinitionBuilder 中 setSource 的替代方案

java - JPA 自引用实体

java - Spring Boot JPA,存储库不删除记录

mysql - 从我的 Web 应用程序创建一个具有唯一且随机名称的表

mysql - 如何在 MySQL 5.7 上模拟 JSON_OVERLAPS 函数?