Java Hibernate注释的@Query参数工作不正常
我正在使用带注释的hibernate查询并获得以下异常: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
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版本?