Найти, где НЕ текущая строка - PullRequest
2 голосов
/ 18 апреля 2019

Я занимаюсь разработкой небольшого cms и использую spring data jpa для своей базы данных.

Когда я добавляю новую страницу, я хочу убедиться, что слаг уже не существует, для этого я добавил метод в свой репозиторий:

public interface PageRepository extends JpaRepository<Page, Integer> {

    Page findBySlug(String slug);

}

Это прекрасно работает при добавлении.

Однако при редактировании страницы я хочу убедиться, что слаг уже не существует, но НЕ для текущей страницы, как я могу это сделать? Я думаю, я мог бы как-то передать текущий идентификатор строки или что-то в этом роде, но как бы я это сделал?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2019

Вы можете написать

Page findBySlugAndIdNot(String slug,Long id)

где id - это имя вашего идентификатора в сущности с правильным типом. Посмотрите документацию

0 голосов
/ 18 апреля 2019

Вы можете попробовать пользовательский запрос, например:

@Query("SELECT CASE WHEN COUNT(c) > 0 THEN true ELSE false END FROM Page p WHERE p.slug = :slug and p.pageId!=pageId")
public boolean existsBySlugInPage(@Param("slug") String slug, @Param("pageId") Integer pageId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...