Как выполнить два SQL-запроса в Spring Boot JPA - PullRequest
0 голосов
/ 25 февраля 2019

В моем запросе SQL есть синтаксическая ошибка.Это мой запрос:

@Transactional
    @Modifying
    @Query(value = "DELETE FROM Category WHERE id=:id \r\n"
            + "DELETE FROM Product_Category WHERE id=:id", nativeQuery = true)
    void deleteCategory(@Param("id") long id);

Это моя ошибка:

org.sqlite.SQLiteException: [SQLITE_ERROR] Ошибка SQL или отсутствует база данных (рядом с ",": синтаксическая ошибка)

1 Ответ

0 голосов
/ 25 февраля 2019

Я не думаю, что вы можете напрямую достичь этой функциональности, написав собственный запрос здесь.Вам нужно использовать концепцию CustomRepository, предоставленную Spring, и создать метод deleteCategory, который запускает два запроса внутри него, используя entityManager.Затем вы можете вызвать этот метод из уровня обслуживания.

Предположим, что ваше имя репозитория CategoryRepository.

Теперь сначала вам нужно создать собственный интерфейс репозитория:

public interface CategoryRepositoryCustom {
    void deleteCategory(Long id);

}

Затем напишите его значение:

@Repository
@Transactional
public class CategoryRepositoryImpl implements CategoryRepositoryCustom {

    @PersistenceContext
    EntityManager em;

    @Override
    @Modifying
    public void deleteCategory(Long id) {
        //execute your two queries one by one using entity manager
    }
}

Теперь ваш основной репозиторий CategoryRepository должен расширять как JpaRepostory, так и CategoryRepositoryCustom, и вы можете вызывать метод deleteCategory из класса обслуживания.Подробнее о пользовательских репозиториях здесь

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