Spring
-
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)..
-
MongoDB. upsert multi개발 기록 2023. 5. 18. 01:58
몽고DB에서 upsert를 한번에 여러개 하는 방법이다. 환경 spring boot 3.0.6 spring-boot-starter-data-mongodb 3.0.6 방법 MongoTemplate는 updateMulti는 제공하지만 upsert는 이와 관련된 기능이 없다. 하지만 BulkOperations을 이용하면 구현 가능하다. public void example() { // mongoTemplate.bulkOps(BulkMode, "콜렉션이름") BulkOperations bulkOperations = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, "movies"); // 1번 Query query1 = new Query() .addCriteri..
-
Spring AOP에서 만난 예상치 못한 오류 --enable-preview개발 기록 2023. 3. 15. 11:39
Spring에서 Aspect 작성 중(끝난 후) 만난 예상치 못한 오류에 대한 정리이다. 1. 환경 java 17 spring boot 2.7.6 spring-boot-start-aop 사용 intelliJ 사용 2. 오류 내용 로컬에서 실행은 되지만 jar 파일 생성시 테스트실패 오류가 나타난다. ../../target/surefire-reports를 확인해보라고 빨간 글자가 나타난다. 대충 내용을 요약하면 Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.675 s "defalut"; }; ... } } 오류를 발생시킨 부분은 새로운 switch 문법이었다. (java12부터 도입) java 17을 적용시켜놨는데 aspect에서는 새..