Issue

    동시 삭제 요청 ObjectOptimisticLockingFailureException

    Spring Boot + Spring Data Jpa 환경에서 특정 resource를 delete하는 api를 사용할 때 ObjectOptimisticLockingFailureException 예외가 발생하였습니다 슬랙으로 온 예외메시지를 확인하고 원인 분석을 하였습니다. 다음은 슬랙으로 온 예외 메시지를 간략히 줄인 내용입니다. exception : ObjectOptimisticLockingFailureException time : 202x년 0x월 xx일 1x시 14분 24초 - 24 request_path: /api/contents/21678 request_method: DELETE log level: warn cause: org.hibernate.StaleStateException: Batch u..

    TransientPropertyValueException: object references an unsaved transient instance 에러

    TransientPropertyValueException: object references an unsaved transient instance 에러 org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing : 연관관계가 있는 엔티티끼리 영속성을 관리할때(영속성 전이) 생기는 오류이다. FK로 지정하는 엔티티가 아직 영속상태(Persist) 가 되지 않거나, 부모객체에서 자식객체를 한번에 저장하려고할때 발생한다. 해결 영속성 전이를 위해 cascade type을 지정한다. @OneToMany, @ManyToOne..

    Controller + JPA, JUnit Slice Test Error [JPA metamodel must not be empty! 해결]

    JPA + JUnit Slice Test Error [JPA metamodel must not be empty! 해결] Controller 단위테스트를 위해 @WebMvcTest 어노테이션을 이용해서 테스트하던 중에 JPA metamodel must not be empty 라는 오류를 만났다. JPA Audit 기능을 사용하기 위해 @EnableJpaAuditing을 추가했었는데, @SpringBootApplication 클래스에 등록해놓은 것이 에러의 원인이었다. JPA metamodel must not be empty! 는 JPA 메타 모델은 비워둘 수 없다는 메시지다. @WebMvcTest는 Web기능과 관련된 Bean만 등록하기 때문에 JPA 생성과 관련된 기능이 전혀 존재하지 않는 테스트 어노테..

    AuthenticationPrincipal Null - 주입받지 못하는 이슈

    AuthenticationPrincipal Null 이슈 - 주입받지 못함 결론부터 AuthenticationPrincipalArgumentResolver 가 빈으로 등록되지 않음. 빈으로 등록해줘야함 @EnableWebSecurity는 설정했고, @EnableWebMvc는 등록안했다가 등록하니 해결됌 spring boot version : 2.7.4 implementation("org.springframework.boot:spring-boot-starter-security:2.7.4") 스프링 시큐리티를 사용하였을 때, 사용자가 인증된다면 Controller 에서 파라미터로 @AuthenticationPrincipal 을 주입 받을 수 있다. @AuthenticationPrincipal 로그인한 사용자..