JPA
-
Spring boot. JPA Expecting a SELECT query개발 기록 2023. 9. 20. 14:45
JPA를 사용해 delete 쿼리를 날리던중 "Expecting a SELECT query" 라는 오류 메세지가 등장했다. @Query("delete from AbcKeyword ak " + "where ak.profile.id = :id ") void deleteAllByProfileId(UUID id); JPA는 delete를 수행하기 전에 select를 날리기 때문이다. 디버깅 모드로 끊어서 보면 repostory의 delete를 실행하는 시점에서는 실제로 select가 실행되고 select 결과에 따라서 트랜젝션이 끝날때 delete를 실행한다. @Transactional // 2. delete 실행 public void deleteAbc(...){ abcRepository.delete~~(id)..
-
Spring Boot. JPA Repository insert multi table under the same Transaction.카테고리 없음 2023. 7. 20. 12:46
공부할 겸 JPA를 한번 사용해 보려고 한다. 환경. java 17 spring boot 3.1.1 목표. 한 트랜젝션에서 여러개의 테이블에 insert나 update 작업이 필요하면 어떡하지? 문제. JPA의 레파지토리를 보면 CrudRepository 인터페이스부터 save()를 제공한다. 이 save 메소드는 SimpleJpaRepository에서 overriding해서 구현되어진다. @Repository @Transactional(readOnly = true) public class SimpleJpaRepository implements JpaRepositoryImplementation { ... @Transactional @Override public S save(S entity) { Asser..