【问题标题】:how can i write a native query in spring boot whith join clause in PostgreSQL如何在 Spring Boot 中使用 PostgreSQL 中的 join 子句编写本机查询
【发布时间】:2022-01-30 12:36:03
【问题描述】:

我在 Spring Boot 中使用 PostgreSQL 中的 join 子句编写本机查询,查询如下:

@Query(value = "SELECT c.name AS \"c.name\"\n" +
"FROM city c ,state s\n" +
"WHERE c.state_id = s.id \n" +
"AND s.name like :name",nativeQuery = true)
List<City> findCityByStateParamsNative(@Param("name") String name);

但我有这个问题: 请求处理失败;嵌套异常是

org.springframework.dao.InvalidDataAccessResourceUsageException:无法执行查询; SQL [SELECT c.name AS "c.name" FROM city c ,state s WHERE c.state_id = s.id AND s.name 像 ?];嵌套异常是 org.hibernate.exception.SQLGrammarException: could not execute query] 根本原因
org.postgresql.util.PSQLException: Le nom de Colonne id n'a pas été trouvé dans ce ResultSet。

谁能帮我解决问题

【问题讨论】:

    标签: java spring database postgresql spring-boot


    【解决方案1】:

    试试这个代码:

    @Query(value = "SELECT c.name " +
    "FROM city c JOIN state s " +
    "ON c.state_id = s.id " +
    "WHERE s.name = ?1", nativeQuery = true)
    List<String> findCityByStateParamsNative(String name);
    

    如果问题没有解决,请在答案下方的评论中写下新的错误。

    【讨论】:

    • 你的回复比你好多了,但我遇到了同样的错误:org.postgresql.util.PSQLException: Le nom de Colonne id n'a pas été trouvé dans ce ResultSet else i need for c .name 不是所有实体 c,最后再次感谢您
    • @AbderahmenHELAOUI 我编辑了答案。如果您只需要 c.name,请尝试使用 String。
    • 我听不懂你的回答
    • @AbderahmenHELAOUI 你想在方法中得到什么?城市列表或带有城市名称的字符串?如果是第二个,那么理论上应该在 List 中有
    • @AbderahmenHELAOUI 我很乐意提供帮助 :) 请接受答案。
    【解决方案2】:

    试试这个代码:

    @Query(value = "SELECT c.* FROM city c INNER JOIN state s ON c.state_id = s.id WHERE s.name = :name ", nativeQuery = true);
    List<City> findCityByStateParamsNative(String name);
    

    【讨论】:

    • 首先我必须非常感谢你,但我只需要 c.name,当我写这个时:@Query(value = "SELECT c.name AS \"c.name\"\ n" + "FROM city c\n" + "INNER JOIN state s ON c.state_id = s.id \n" + "WHERE s.name = :name ", nativeQuery = true) List findCityByStateParamsNative(String name );我遇到了同样的问题:org.postgresql.util.PSQLException: Le nom de Colonne id n'a pas été trouvé dans ce ResultSet
    猜你喜欢
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 2011-03-01
    • 2019-12-18
    • 1970-01-01
    相关资源
    最近更新 更多