I am trying to write a query to filter media for category, id, name and alternative titles. When I pass name or alternative title the query work normally, but when I pass only category and id the query return empty list.
I write this query to trying to filter media:
<code> @Query("SELECT m FROM MediaModel m " +
"LEFT JOIN AlternativeTitleModel a ON a MEMBER OF m.alternativeTitles " +
"WHERE m.mediaCategory = :category " +
"AND m.id = :id " +
"OR m.name LIKE CONCAT('%',:name,'%') " +
"OR a.name LIKE CONCAT('%',:alternativeTitle,'%')")
public List<MediaModel> findMediaByIdOrNameOrAlternativeTitleAndMediaCategory(
@Param("id") Integer id,
@Param("name") String name,
@Param("alternativeTitle") String alternativeTitle,
@Param("category") MediaCategoryModel category
);
</code>
<code> @Query("SELECT m FROM MediaModel m " +
"LEFT JOIN AlternativeTitleModel a ON a MEMBER OF m.alternativeTitles " +
"WHERE m.mediaCategory = :category " +
"AND m.id = :id " +
"OR m.name LIKE CONCAT('%',:name,'%') " +
"OR a.name LIKE CONCAT('%',:alternativeTitle,'%')")
public List<MediaModel> findMediaByIdOrNameOrAlternativeTitleAndMediaCategory(
@Param("id") Integer id,
@Param("name") String name,
@Param("alternativeTitle") String alternativeTitle,
@Param("category") MediaCategoryModel category
);
</code>
@Query("SELECT m FROM MediaModel m " +
"LEFT JOIN AlternativeTitleModel a ON a MEMBER OF m.alternativeTitles " +
"WHERE m.mediaCategory = :category " +
"AND m.id = :id " +
"OR m.name LIKE CONCAT('%',:name,'%') " +
"OR a.name LIKE CONCAT('%',:alternativeTitle,'%')")
public List<MediaModel> findMediaByIdOrNameOrAlternativeTitleAndMediaCategory(
@Param("id") Integer id,
@Param("name") String name,
@Param("alternativeTitle") String alternativeTitle,
@Param("category") MediaCategoryModel category
);
And I ready tried to remove the left join, alternativeTiles and name, but the query continues return a empty list.