mysql - hibernate 和 mysql 和 Operand 应该包含 2 列
问题描述
我有几个例外:
- 首先,
org.hibernate.engine.jdbc.spi.SqlExceptionHelper
- 操作数应包含 2 列 - 二、
org.hibernate.exception.DataException
:无法提取ResultSet
我的查询是这样的:
select * from items
where (appid, version) in (('abc', '123'), ('xyz', '456')
我的 JPA 存储库是这样的:
@Query(value = "select * from items where (appid, version) in (:appIdVersionList)", nativeQuery = true)
List<Item> getItemList(@Param("appIdVersionList") String appIdVersionList);
如果我要这样做,没有例外:
@Query(value = "select * from items where appid in (:appIdList) and version in (:versionList)", nativeQuery = true)
List<Item> getItems(@Param("appIdList") List<String> appIdList, @Param("versionList") List<String> versionList);
但是没有异常的查询可能会给我一个('abc', '456')
我不想要的结果。
我需要做什么才能摆脱异常?
谢谢!
解决方案
您必须列但只有一个参数。那永远行不通。
唯一可行的是:
@Query(value = "select * from items where (appid, version) in (:appid, :version)", nativeQuery = true)
List getItemList(String appid, String version);
否则,您必须将其拆分为两个 IN 条件。
推荐阅读
- php - Request with fsockopen - response without headers
- android - 如何取回从 Uri (Referral / Deep Link) 发送的数据?
- javascript - Gherkin 多步骤定义匹配
- hyperlink - 如何显示包含超链接的 Draft.js 数据?
- linux - 如何在每个月的第一个星期四安排 cron
- python - Pytoch,在 macOS Catalina 问题上导入 TorchVision
- flutter - How to implement Wear OS notifications using flutter?
- go - 如何避免共享包的依赖循环?
- c++ - thread failed to dedact callback function
- html - Close modal button doesn't work in bootstrap