Spring Data JPA PagingAndSortingRepository сортирует зашифрованные данные вместо расшифрованных данных - PullRequest
0 голосов
/ 01 декабря 2019

Я храню зашифрованные данные в своей базе данных, используя AttributeConverter и аннотацию на уровне поля (например, @Convert(converter = StringEncrypt.class)). Все работает нормально, за исключением того, что когда я использую Pageable с PagindAndSortingRepository, сортировка и разбиение на страницы выполняется на зашифрованных данных.

Есть идеи, как решить эту проблему?

Pageable sortedBy = ListUtils.getPageable(pageAndSortType); // building a pageable
ArrayList<MyObject> elementList = new ArrayList<>();
myRepository.findAll(sortedBy).forEach(elementList::add); // querying the db with pageable object 
return elementList;
@Convert(converter = StringEncrypt.class)
private String name;

1 Ответ

2 голосов
/ 01 декабря 2019

Ну, сортировка выполняется на стороне СУБД, поэтому она будет сортироваться по контенту, который ей доступен. Вам придется либо расшифровать его на лету в SQL, либо получить все и отсортировать его самостоятельно. Ваш вызов метода преобразуется в некоторый SQL SELECT *.... sort by propertyName, и он выполняется следующим образом.

Каждое преобразование, которое вы выполняете, например, с помощью @Convert, выполняется на стороне приложения ПОСЛЕ выборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...