Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate注释的@Query参数工作不正常_Java_Hibernate - Fatal编程技术网

Java Hibernate注释的@Query参数工作不正常

Java Hibernate注释的@Query参数工作不正常,java,hibernate,Java,Hibernate,我正在使用带注释的hibernate查询并获得以下异常: Caused by: org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 2 at org.hibernate.engine.query.ParameterMetadata.getOrdinal

我正在使用带注释的hibernate查询并获得以下异常:

Caused by: org.hibernate.QueryParameterException: Position beyond number of declared ordinal parameters. Remember that ordinal parameters are 1-based! Position: 2
at org.hibernate.engine.query.ParameterMetadata.getOrdinalParameterDescriptor(ParameterMetadata.java:81) ~[hibernate-core-3.6.10.Final.jar:3.6.10.Final]
at org.hibernate.engine.query.ParameterMetadata.getOrdinalParameterExpectedType(ParameterMetadata.java:87) ~[hibernate-core-3.6.10.Final.jar:3.6.10.Final]
at org.hibernate.impl.AbstractQueryImpl.determineType(AbstractQueryImpl.java:444) ~[hibernate-core-3.6.10.Final.jar:3.6.10.Final]
at org.hibernate.impl.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:416) ~[hibernate-core-3.6.10.Final.jar:3.6.10.Final]
at org.hibernate.ejb.QueryImpl.setParameter
下面是导致它的代码:

@Query(value = "from MatchReport where match = ?1 and categoryCDList like '%?2%' or categoryCDList like '%ALL%'")
@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value = "true") })
List<MatchReport> findByMatchAndUserType(Match match, String userType);
@Query(value=“from MatchReport,其中match=?1,categoryCDList类似于“%”2%”或categoryCDList类似于“%ALL%”)
@QueryHints({@QueryHint(name=“org.hibernate.cacheable”,value=“true”)})
列出FindByMatchHandUserType(匹配,字符串userType);

这是不是因为没有转义单引号?如果是这样,我如何在注释中转义这些引号?我查找了文档,结果很短。

好的,我做了一些测试,您的查询应该是这样的:

@Query(value = "from MatchReport where match = ?1 
                and categoryCDList like %?2% or categoryCDList like '%ALL%'")
因此,基线是,如果要匹配的唯一值是序号参数,则不需要将类似条件放在双括号内

这同样适用于命名参数:

@Query(value = "from MatchReport where match = :match 
             and categoryCDList like %:usertype% or categoryCDList like '%ALL%'")
List<MatchReport> findByMatchAndUserType(
          @Param("match")Match match, @Param("usertype")String userType);
@Query(value=“from MatchReport,其中match=:match
和categoryCDList(如%):usertype%或categoryCDList(如“%ALL%”)
列出FindByMatchHandUserType(
@Param(“match”)match,@Param(“usertype”)字符串usertype);

我使用的是
spring数据jpa:1.11.0。RC1

有一个完全相同的问题——如果有人有一个答案,那就是spring数据jpa版本?