【发布时间】:2019-09-29 02:16:38
【问题描述】:
我想从数据库中过滤掉几个标准的数据(假设它是 8 个)。 下面的查询方法很好地做到了这一点。但实际上,传递给查询方法的这个条件可以为空(这意味着不应该包含在选择查询中)。
我应该如何处理这种情况? 我真的不想让 n 方法来处理每个案例 - 这不是一个好方法。
@Query("SELECT NEW api.model.GeneralAnnouncementInfo(" +
"an.id, an.title, po.price, SUBSTRING(an.description, 1, 100), an.provider, an.creationDate, an.url, l.lessorType, concat(loc.city, ' ', loc.district)) " +
"FROM Announcement as an " +
"LEFT JOIN an.priceOffer as po " +
"LEFT JOIN an.lessor as l " +
"LEFT JOIN an.location as loc " +
"LEFT JOIN an.propertyData as pd " +
"WHERE l.lessorType = (:lessor) " +
"AND pd.roomNumber = (:rooms) " +
"AND pd.bathroomNumber = (:baths) " +
"AND pd.parkingAvailability = (:parking) " +
"AND pd.isSmokingAllowed = (:smokers) " +
"AND pd.isPetFriendly = (:pets) " +
"AND pd.area = (:realPrice) " +
"AND po.price = (:area) ")
Page<GeneralAnnouncementInfo> getAnnouncementsBySearchCriteria(Pageable pageable,
String lessor,
String rooms,
String baths,
String parking,
String smokers,
String pets,
String realPrice,
String area
);
【问题讨论】:
-
WHERE :lessor IS NULL OR l.lessorType = (:lessor)?
标签: java spring spring-boot jpa spring-data