Это код класса My Spring Repository.Он использует JPAQuery из QueryDSL.
Из-за этой проблемы сортировка текста не работает должным образом.Фактически, я могу создать новую базу данных, но я хочу решить ее, изменив запрос.
@Repository
public class StoreQueryDSLRepositoy {
@Autowired
JPAQueryFactory jpaQueryFactory;
public Page<StoreMgmListDTO> getStoreMgmListByStoreName(SearchTargetType searchTargetType, String searchText
, Pageable pageable, List<IndustryClassType> industryClassTypeFilter) {
JPAQuery query = this.jpaQueryFactory.query();
QStore store = QStore.store;
query.select(store);
query.from(store);
query.where(store.removed.isFalse());
....
if (pageable != null)
inputSortQuery(query, pageable.getSort(), store);
....
QueryResults results = query.fetchResults();
List<Store> storeList = results.getResults();
List<StoreMgmListDTO> storeMgmListDTOS = new ArrayList<>();
for(Store store1 : storeList){
storeMgmListDTOS.add(new StoreMgmListDTO(store1));
}
return new PageImpl<>(storeMgmListDTOS, pageable, results.getTotal());
}
private void inputSortQuery(JPAQuery query, Sort sort, QStore store) {
Iterator<Sort.Order> iterator = sort.iterator();
while (iterator.hasNext()) {
Sort.Order order = iterator.next();
switch (order.getProperty()) {
case "industryClassType":
query.orderBy(order.isAscending() ? store.industryClass.asc() : store.industryClass.desc());
break;
case "storeName":
query.orderBy(order.isAscending() ? store.name.asc() : store.name.desc());
break;
case "startLicenseDate":
query.orderBy(order.isAscending() ? store.curLicense.startDate.asc() : store.curLicense.startDate.desc());
break;
case "endLicenseDate":
query.orderBy(order.isAscending() ? store.curLicense.endDate.asc() : store.curLicense.endDate.desc());
break;
case "licenseType":
query.orderBy(order.isAscending() ? store.curLicense.licenseType.asc() : store.curLicense.licenseType.desc());
break;
// case "numOfSignage":
// query.orderBy(order.isAscending() ? store.signageSet.size().asc() : store.signageSet.size().desc());
// break;
}
}
}
}
Я хочу вставить разбор в inputSortQuery () ниже.как это
select store.name
from store
left outer join license l on store.cur_license_id = l.id
left outer join signage s on store.id = s.store_fkey
order by store.name collate "C" asc