java - 用spring数据点燃jpa使用语法IN
问题描述
当我将 JPA 与 一起使用时IN
,它会导致一些问题,我该如何解决?我对表达感到困惑吗 IN?[*]
?谢谢
ignite:2.7.6
spring jpa:ignite-spring-data_2.0
spring boot:2.0.9.RELEASE
h2:1.4.197
jpa 方法:列出 findByShipVisitIdIsIn(List shipVisitIdList); 或 findByShipVisitIdIn。
第一种方法“findByArrivedTimeGreaterThanEqualAndArrivedTimeLessThanEqual”工作正常
@RepositoryConfig(cacheName = "BerthplanShipVisitCache")
public interface BerthplanShipVisitRepository extends IgniteRepository<BerthplanShipVisit, String>,
HdShipIdRepository<BerthplanShipVisit, String> {
List<BerthplanShipVisit> findByArrivedTimeGreaterThanEqualAndArrivedTimeLessThanEqual(Timestamp start, Timestamp end);
List<BerthplanShipVisit> findByShipVisitIdIsIn(List<String> shipVisitIdList);
}
SQL是由插件自动生成的ignite-spring-data
,我猜它在和之间ignite-spring-data
有问题h2
问题跟踪:
Caused by: org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "SELECT ""BerthplanShipVisitCache"".""BerthplanShipVisit""._KEY, ""BerthplanShipVisitCache"".""BerthplanShipVisit""._VAL FROM ""BerthplanShipVisit"" WHERE ((""BerthplanShipVisit"".""shipVisitId"" IN ?[*]))"; expected "("; SQL statement:
SELECT "BerthplanShipVisitCache"."BerthplanShipVisit"._KEY, "BerthplanShipVisitCache"."BerthplanShipVisit"._VAL FROM "BerthplanShipVisit" WHERE (("BerthplanShipVisit"."shipVisitId" IN ?)) [42001-197]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
at org.h2.message.DbException.getSyntaxError(DbException.java:217)
at org.h2.command.Parser.getSyntaxError(Parser.java:555)
at org.h2.command.Parser.read(Parser.java:3518)
at org.h2.command.Parser.readCondition(Parser.java:2433)
at org.h2.command.Parser.readAnd(Parser.java:2342)
at org.h2.command.Parser.readExpression(Parser.java:2334)
at org.h2.command.Parser.readTerm(Parser.java:3252)
at org.h2.command.Parser.readFactor(Parser.java:2587)
at org.h2.command.Parser.readSum(Parser.java:2574)
at org.h2.command.Parser.readConcat(Parser.java:2544)
at org.h2.command.Parser.readCondition(Parser.java:2370)
at org.h2.command.Parser.readAnd(Parser.java:2342)
at org.h2.command.Parser.readExpression(Parser.java:2334)
at org.h2.command.Parser.readTerm(Parser.java:3252)
at org.h2.command.Parser.readFactor(Parser.java:2587)
at org.h2.command.Parser.readSum(Parser.java:2574)
at org.h2.command.Parser.readConcat(Parser.java:2544)
at org.h2.command.Parser.readCondition(Parser.java:2370)
at org.h2.command.Parser.readAnd(Parser.java:2342)
at org.h2.command.Parser.readExpression(Parser.java:2334)
at org.h2.command.Parser.parseSelectSimple(Parser.java:2291)
at org.h2.command.Parser.parseSelectSub(Parser.java:2133)
at org.h2.command.Parser.parseSelectUnion(Parser.java:1946)
at org.h2.command.Parser.parseSelect(Parser.java:1919)
at org.h2.command.Parser.parsePrepared(Parser.java:463)
at org.h2.command.Parser.parse(Parser.java:335)
at org.h2.command.Parser.parse(Parser.java:311)
at org.h2.command.Parser.prepareCommand(Parser.java:278)
at org.h2.engine.Session.prepareLocal(Session.java:611)
at org.h2.engine.Session.prepareCommand(Session.java:549)
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1247)
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:76)
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:694)
at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.prepare0(IgniteH2Indexing.java:539)
at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.prepareStatement(IgniteH2Indexing.java:509)
at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.prepareStatement(IgniteH2Indexing.java:476)
at org.apache.ignite.internal.processors.query.h2.IgniteH2Indexing.prepareStatementAndCaches(IgniteH2Indexing.java:2635)
... 89 common frames omitted
解决方案
最后,我编辑源代码 org.apache.ignite.springdata20.repository.query.IgniteRepositoryQuery prepareQuery 方法。在里面,对待'IN?到 'IN (?,?)' ,参数也变平了。这似乎没问题。
推荐阅读
- c - 如何将数组声明为参数不需要第一维的界限?
- python - 为什么在负数的情况下模除法运算的工作方式不同?
- angular - 使组件使用者可配置 ChangeDetectionStrategy
- graylog - 升级到企业版后,Graylog Web 界面上没有转发器输入
- node.js - 我的代码在 Nodejs 中显示 TypeError:"Cannot read property 'name' of null"
- java - 从表中选择计数与另一个表的总和
- vue.js - 在这种情况下,对象解构意味着什么
- c++ - 不知道为什么对象是本地 vs 引用
- r - 如何在R中的函数中更改函数的默认参数
- sql - 分区列倾斜时更有效地写入分区拼花