猿问

Java Hibernate java.lang.IllegalArgumentException:

在游戏实体中,我有:


private Set<GameGenre> genres = new HashSet<>();


我编写了自定义查询,将按流派 ID 过滤游戏。当我在查询中硬编码流派 id 时,它可以工作:


@Query("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 inner join game.genres genres where lower(game.name) like CONCAT('%', :name, '%') and genres IN (1301) group by game.id order by tournamentCount desc, game.id")

但是当我尝试传递 id 列表时:


@Query("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 inner join game.genres genres where lower(game.name) like CONCAT('%', :name, '%') and genres IN (:genres) group by game.id order by tournamentCount desc, game.id")

    Page<GameDTO> findAllOrderByTournamentCountAndGenreFilter(@Param("name") String name, @Param("genres") String genres, Pageable page);

游戏实体:


@Entity

@Table(name = "game")

@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)

@Document(indexName = "game")

public class Game implements Serializable {


    private static final long serialVersionUID = 1L;


    @Id

    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")

    @SequenceGenerator(name = "sequenceGenerator")

    private Long id;


    @Column(name = "name")

    private String name;


    @Column(name = "active")

    private Boolean active;


    @Lob

    @Column(name = "description")

    private String description;


    @Column(name = "cover_image")

    private String coverImage;


    @Column(name = "logo")

    private String logo;


    @Column(name = "background_image")

    private String backgroundImage;


慕盖茨4494581
浏览 146回答 2
2回答

慕码人2483693

您可能需要传递 GameGenre 类型的对象而不是字符串。也许也是 GameGenre 对象的集合。
随时随地看视频慕课网APP

相关分类

Java
我要回答