I am using Spring Data JPA with native queries like below
public interface ItemRepository extends JpaRepository<ItemEntity, Long> {
@Query(value = "select * from items i where i.category = :itemCategory and i.item_code = :itemCode", nativeQuery = true)
Page<ItemEntity> search(@Param("itemCategory") String itemCategory, @Param("itemCode") String itemCode, Pageable pageable);
}
Now, my use case is
- It
itemCode
is available, only the item with that code from that category should be returned. - But if
itemCode
is not available then all items in that category should be returned.
So the problem with the above category is when itemCode
is passed as NULL
no data is returned since it does not match anything. whereas the requirement is it should be ignored.
So is there a way to optionally add a clause to Spring Data JPA native query. I know it is possible with CriteriaQuery
but can we do something similar for native queries?
Thanks