Производные методы весной данных jpa - PullRequest
0 голосов
/ 10 ноября 2018
Документация

Spring Data JPA говорит нам, что мы можем иметь производные методы для функциональности delete. Тогда документация приводит пример как:

interface UserRepository extends CrudRepository<User, Long> {

   long deleteByLastname(String lastname);

   List<User> removeByLastname(String lastname);
}

Что меня смущало, так это removeByLastname. У CrudRepository есть delete методы, которые начинаются со слова delete, и нет метода, который начинается с remove. У нас есть методы, начинающиеся с remove? Если да, то когда и как их использовать.

Ссылка на документацию: https://docs.spring.io/spring-data/jpa/docs/2.1.2.RELEASE/reference/html/

Ответы [ 3 ]

0 голосов
/ 10 ноября 2018

Они оба могут использоваться одинаково. Вы можете назвать свой метод, чтобы начать с remove или delete. См. PartTree класс для удаления шаблонов:

private static final String DELETE_PATTERN = "delete|remove";

0 голосов
/ 10 ноября 2018

При создании реализации репозитория Spring Data проверяет любые методы в интерфейсе репозитория, анализирует имя метода и пытается понять назначение метода в контексте сохраняемого объекта.По сути, Spring Data определяет своего рода миниатюрный предметно-ориентированный язык (DSL), в котором подробности персистентности выражаются в сигнатурах методов репозитория.Нет никакой разницы между remove и delete.Вы можете использовать любой из них.То же самое с find get read

0 голосов
/ 10 ноября 2018

Я полагаю, что они используют List<User> removeByLastname(String lastname);, потому что уже есть long deleteByLastname(String lastname);, и вы не можете иметь функцию с тем же именем и аргументами

В современных версиях Spring Data JPA (> = 1.7.x) доступен запрос на удаление для операций удаления и удаления

https://www.logicbig.com/tutorials/spring-framework/spring-data/jpa-derived-delete-queries.html

...