JPA将列表传递到本机查询中的IN子句

ddrv8njm  于 2024-01-09  发布在  Spring
关注(0)|答案(2)|浏览(296)

我有这样的疑问:

  1. @Query(
  2. value = "select distinct ID_RIGHT from TDK_SEC_HOTEL_RIGHT osrr where osrr.ID_RIGHT in ?1",
  3. nativeQuery = true)
  4. List<String> findAllByHOTELs(List<String> HOTELs);

字符串
但是我在运行时遇到了这个错误:

  1. Caused by: java.sql.SQLException: Invalid column type
  2. at oracle.jdbc.driver.OraclePreparedStatement.setObjectCritical(OraclePreparedStatement.java:8547)
  3. at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:8029)
  4. at oracle.jdbc.driver.OraclePreparedStatement.setObjectInternal(OraclePreparedStatement.java:8804)
  5. at oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:8779)
  6. at oracle.jdbc.driver.OraclePreparedStatementWrapper.setObject(OraclePreparedStatementWrapper.java:217)
  7. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
  8. Method)
  9. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  10. at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  11. at java.base/java.lang.reflect.Method.invoke(Method.java:566)
  12. at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:118)
  13. at com.sun.proxy.$Proxy143.setObject(Unknown Source)
  14. at org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.setParameterValueInDatabaseCall(DatabasePlatform.java:2648)
  15. at org.eclipse.persistence.internal.databaseaccess.DatabaseCall.prepareStatement(DatabaseCall.java:836)
  16. at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:628)
  17. ... 100 more
  18. 11:01:36.510 [https-openssl-apr-1062-exec-1] ERROR
  19. com.hostels.web.filter.HostelsResponseFilter - Request
  20. processing failed; nested exception is
  21. org.springframework.orm.jpa.JpaSystemException: Exception
  22. [EclipseLink-4002] (Eclipse Persistence Services -
  23. 2.7.5.v20191016-ea124dd158):
  24. org.eclipse.persistence.exceptions.DatabaseException
  25. Internal Exception: java.sql.SQLException: Invalid column type
  26. Error Code: 17004
  27. Call: select distinct ID_RIGHT from TDK_SEC_HOTEL_RIGHT osrr where
  28. osrr.ID_RIGHT in ?

brtdzjyr

brtdzjyr1#

你可以试试这个查询:

  1. @Query(
  2. value = "select distinct ID_RIGHT from TDK_SEC_HOTEL_RIGHT osrr where osrr.ID_RIGHT in :hotels",
  3. nativeQuery = true)
  4. List<String> findAllByHOTELs(@Param("hotels") List<String> HOTELs);

字符串
在上面的查询中,:hotels是绑定到HOTEL列表的命名参数。

5fjcxozz

5fjcxozz2#

您需要分享更多的信息来调试错误。
根据错误Invalid column type,我怀疑ID_RIGHT的变量类型有问题。根据您提供的代码,此列的类型应该是VARCHAR(因为它Map到String)。

相关问题