请建议自定义 findBy 或查询

Please, suggest custom findBy or query

我需要通过多个参数进行搜索,但如果其中一些是 null,则在搜索时不要考虑它们。 例如,我想找到一个在美国并在 Google 工作的人,但现在我的搜索已实现,因此所有现在在美国或目前正在 Google 工作的人].如果我使用 and 而不是 or,将使用 null.

搜索字段

现在我的搜索看起来像这样并得到一组输入 - 第二个问题由此产生。 如何将此集合与此实体的 OneToMany table 进行比较?

Long<Game> findByGameTitleOrGameTypeOrGameLocations(String title, String type, Set<String> locations);

这是来自实体的一组位置:

@ElementCollection
private Set<String> gameLocations;

这些问题对某些人来说可能看起来很愚蠢 xD 但我是新手。

我可以通过@Query 注释建议自定义查询请求。我不确定这是最佳方式,但它确实有效。

@Query("SELECT g FROM Game g" +
    " WHERE (:title is null or g.title = :title)" +
    " AND (:type is null or g.type = :type)" +
    " AND (:locations is null or g.locations in :locations)")
Long<Game> findByGameTitleOrGameTypeOrGameLocations(
    @Param("title") String title,
    @Param("type") String type,
    @Param("locations") Set<String> locations);

这是一个请求的例子,因为我不知道你的数据库型号。

why cant you go with preparing the query as below.
@Query(value = "select * from game ga where ga.tile=:#{#title}  and ga.type=:#{#type} and ga.location in (:#{#locationList})", nativeQuery = true)
    Object[] findByGameTitleOrGameTypeOrGameLocations(@Param("title") String title,@Param("type") String type,@Param("location") List<String> locationList);