通过在Spring中提供可选参数来获取记录

时间:2018-03-30 10:47:12

标签: mysql spring-boot spring-data-jpa

我需要根据可选参数获取记录。

Ex Database: MySql
Tables:
Hotel-> hotel_id, name, group_id, status, brand_id, no_rooms, region_id
Region -> region_id, region_name, region_code, region_manager

地区到酒店有一对多的关系。

我可以使用此类查询来获取酒店记录

Select * from MyDB.Hotel h where h.group_id = 2 and h.brand_id = "ABC" and h.status = "Available" and h.region_id in (select region_id from MyDB.Region r where r.region_code = "13" and r.region_name = "ABC");

类似地,我创建了一个api端点,通过将group_id,brand_id,status,region_code,region_name作为必需参数传递来获取酒店详细信息,并且能够获取记录。

我正在使用Spring CRUD存储库。

@Query(value="from Hotel h where (h.group =:group) and (h.brand = :brand) and (h.status = :status) and h.region in (from Region r where (r.regionCode =:regionCode) and (r.regionName =:regionName))")
Page<Hotels> findAllHotels (@Param("group") Group group,
                               @Param("brand") Brand brand,
                               @Param("status") String status,
                               @Param("regionCode") EnumProductGroup regionCode,
                               @Param("regionName") EnumProductType regionName,
                               Pageable pageable); 

现在我需要将请求发送到与可选参数相同的端点。

如果缺少一个参数,仍需要根据其他参数获取记录。意味着缺少的参数应该从动态的地方删除。

我尝试将动态查询字符串传递给存储库查询@Query但是失败了。我不知道这是否可能。

request-&gt; controller-&gt; service-&gt; repository扩展了CrudRepository。

是否有基于可用参数生成动态查询,或者是否存在与我正在尝试的不同的其他方面。

0 个答案:

没有答案