【问题标题】:SQL statement not working while using with JPA Repository与 JPA 存储库一起使用时 SQL 语句不起作用
【发布时间】:2019-11-25 15:27:53
【问题描述】:

我正在尝试从MYSQL 获取记录,同时发布来自POSTMENGET 请求。 SQL 查询在 MYSQL 控制台中有效,但在 JPA 存储库中无效。

@Repository
public interface RecipeRepository extends JpaRepository<Recipe, Long> {
@Query(value = "select * from Recipe where Recipe.id in (select Recipe_id  
    from Recipe_keywords where keywords like '%:keyword_rec%') ", nativeQuery = true)
List<Recipe> findByKeyword(@Param("keyword_rec") String keyword_rec);
}

实际结果

没有选择数据

预期结果

数据库中有一行可用,该行在与 MYSQL 控制台一起使用时作为查询结果返回,该行也应在此处返回。

更新 通过按照建议更新查询,输出中没有进行任何更改。这是打印的查询

select * from Recipe r where r.id in (select rk.Recipe_id  from Recipe_keywords rk where rk.keywords like '%:keyword_rec%') 

【问题讨论】:

标签: hibernate rest spring-boot spring-data-jpa


【解决方案1】:

错误已解决,将我的查询更改为

select * from Recipe r where r.id in (select rk.Recipe_id  from Recipe_keywords rk where rk.keywords like %:keyword_rec%) 

【讨论】:

    【解决方案2】:

    因为您在MySQL 上编写的查询将与您为JPA 编写的查询略有不同。

    例如SELECT * FROM Customer becomes "SELECT c FROM Customer c"

    看一下链接: https://www.oracle.com/technetwork/articles/vasiliev-jpql-087123.html

    【讨论】:

    • 没有。他正在发出本机 (SQL) 查询 nativeQuery = true。不是 JPQL 查询。
    • 你完全正确!我错过了 natvieQuery 属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多