在单引号内的 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);
我正在寻找一种在本机查询中绑定给定参数的方法,其中值必须在单引号内,如下所示:
@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);