在单引号内的 Jpa 存储库本机查询中绑定 @param

Bind @param in a Jpa repository native query inside single quotations

我正在寻找一种在本机查询中绑定给定参数的方法,其中值必须在单引号内,如下所示:

@Transactional(readOnly = true)
@Query(value = " SELECT c.ID " +
               " FROM table1 clh " +
               " LEFT JOIN table2 nks " +
               " on clh.SERIAL = nks.SERIAL_REF " +
               " WHERE clh.CREATED_DATE >= :now - interval ':timeThreshold' HOUR " +
               " AND nks.SERIAL_REF IS NULL" , nativeQuery = true)
List<Long> getIdsWithoutAnswer (@Param("timeThreshold") Integer timeThreshold, @Param("now") LocalDateTime now);

但是,当我尝试 运行 时,会导致休眠无法绑定单引号 '' 中提供的 timeThreshold 值。

有谁知道如何解决这个问题?

您的本机 Oracle 查询遇到的问题与尝试将值绑定到区间文字有关。你不能那样做。相反,使用 NUMTODSINTERVAL() 函数:

@Transactional(readOnly = true)
@Query(value = " SELECT c.ID " +
               " FROM table1 clh " +
               " LEFT JOIN table2 nks " +
               " on clh.SERIAL = nks.SERIAL_REF " +
               " WHERE clh.CREATED_DATE >= :now - numtodsinterval(:timeThreshold, 'hour') " +
               " AND nks.SERIAL_REF IS NULL" , nativeQuery = true)
List<Long> getIdsWithoutAnswer (@Param("timeThreshold") Integer timeThreshold, @Param("now") LocalDateTime now);