【问题标题】:spring data jpa, native query not setting query parameterspring data jpa,本机查询未设置查询参数
【发布时间】:2021-05-31 17:02:18
【问题描述】:

我有一个 Spring JPA 存储库,定义了本机查询,查询似乎可以执行,但不会产生任何结果。

存储库类

@Repository
public interface AddressBaseRepository extends JpaRepository<Address, String> {

    @Query(value = "select ADDRESSES.UPRN,ADDRESSES.FID,ADDRESSES.ORGANISATION,ADDRESSES.SUB_BUILDING,BUILDINGS.NAME as BUILDING,ADDRESSES.BUILDING_NUMBER,STREETS.NAME as STREET,TOWNS.NAME as TOWN,LOCALITY.NAME as LOCALITY,POSTCODES.POSTCODE,"
            + "EASTING,"
            + "NORTHING,"
            + "LATITUDE,"
            + "LONGITUDE"
            + " FROM ADDRESSES "
            + " INNER JOIN STREETS ON STREETS.ID = STREET"
            + " INNER JOIN TOWNS ON TOWNS.ID = TOWN"
            + " INNER JOIN POSTCODES ON POSTCODES.ID = POST_CODE"
            + " LEFT JOIN LOCALITY ON LOCALITY.ID = LOCALITY"
            + " LEFT JOIN BUILDINGS ON BUILDINGS.ID = BUILDING_NAME"
            + " LEFT JOIN ORGANISATIONS ON ORGANISATIONS.ID = ORGANISATION"
            + " WHERE ADDRESSES.UPRN = ?1", nativeQuery = true)
    List<Address> getAddressByUprn(String uprn);
}

查看日志可以看出查询参数没有设置

Hibernate: select ADDRESSES.UPRN,ADDRESSES.FID,ADDRESSES.ORGANISATION,ADDRESSES.SUB_BUILDING,BUILDINGS.NAME as BUILDING,ADDRESSES.BUILDING_NUMBER,STREETS.NAME as STREET,TOWNS.NAME as TOWN,LOCALITY.NAME as LOCALITY,POSTCODES.POSTCODE,EASTING,NORTHING,LATITUDE,LONGITUDE FROM ADDRESSES  INNER JOIN STREETS ON STREETS.ID = STREET INNER JOIN TOWNS ON TOWNS.ID = TOWN INNER JOIN POSTCODES ON POSTCODES.ID = POST_CODE LEFT JOIN LOCALITY ON LOCALITY.ID = LOCALITY LEFT JOIN BUILDINGS ON BUILDINGS.ID = BUILDING_NAME LEFT JOIN ORGANISATIONS ON ORGANISATIONS.ID = ORGANISATION WHERE ADDRESSES.UPRN = ?

有人可以指出我为什么没有设置参数的正确方向吗?我也尝试过命名参数并得到相同的结果。

【问题讨论】:

  • 您不会以正确的配置打印日志!添加您的日志配置。

标签: java hibernate spring-data-jpa


【解决方案1】:

SQL 使用占位符发送,绑定参数的值单独发送。这不是您看不到预期结果的原因。正确配置日志记录,您将能够看到绑定的参数。

请参阅 How to print a query string with parameter values when using Hibernate 了解如何为 Hiberante 执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-14
    • 2017-04-21
    • 1970-01-01
    相关资源
    最近更新 更多