Java Hibernate Java.lang.IllegalArgumentException:未知参数位置:1

Java Hibernate Java.lang.IllegalArgumentException:未知参数位置:1,java,spring,hibernate,jpa,hql,Java,Spring,Hibernate,Jpa,Hql,这是我的查询方法: @Query(value = "select new com.twognation.hub.dto.GameDTO(game.id, game.name, game.active, game.description, game.coverImage, game.logo, game.backgroundImage, game.featuredImage, game.characterImage, game.smallCoverImage, count(tournament.i

这是我的查询方法:

@Query(value = "select new com.twognation.hub.dto.GameDTO(game.id, game.name, game.active, game.description, game.coverImage, game.logo, game.backgroundImage, game.featuredImage, game.characterImage, game.smallCoverImage, count(tournament.id) as tournamentCount) from Game game left join Tournament tournament on game.id=tournament.game where lower(game.name) like '%:name%' group by game.id order by tournamentCount desc, game.id",
                countQuery = "select count(1) from Game game left join Tournament tournament on game.id=tournament.game where lower(game.name) like '%:name%' group by game.id order by tournamentCount desc, game.id")
Page<GameDTO> findAllOrderByTournamentCount(@Param("name") String name, Pageable page);
这:

在JPA中,它只是一个本机字符串,要解决此问题,可以使用
CONCAT
运算符,如下所示:

CONCAT('%', :name, '%')

这将在以后转换为
'%some_value%'
,例如看起来您在
方面有问题,比如

而不是

'%:name%'
做:


尝试使用JpaRepository或crudepository,在这种情况下,您将不需要使用@Query,也许您可以解决问题
'%:name%'
是字符串文本。。。你明白为什么这可能是个问题吗?这很有效。还有一个问题。在游戏中,我有一套风格。如何添加到查询以按特定类型id进行筛选?@user3364181也许您可以在
中使用
,例如
:g.genres中的类型
我在尝试时遇到此错误:由:org.h2.jdbc.jdbcsql异常引起:SQL中的语法错误statement@user3364181在原来的问题之外再问其他问题是不好的,因此,请创建一个新的问题,在这个问题中,您可以详细描述您想要做的事情以及您迄今为止尝试了什么,我相信我们可以帮助您:)就像这样,我无法理解您要做什么或您想要什么,我正在等待您的新问题确定SQL Server 2016会失败。康卡特建议加强了上述工作。
CONCAT('%', :name, '%')
'%:name%'
%:name%