본문 바로가기

스프링 부트/Error-Log6

[Error-Log] ORA-01861: literal does not match format string ORA-01861: literal does not match format string 리터럴이 형식 문자열과 일치하지 않음 해커톤 마감을 앞두고 로컬에선 잘만 되던 API가 EC2에선 400에러를 뱉는 상황이 있었습니다. OS의 LANG 설정이 달라 문자열을 날짜로 제대로 변환을 못해서 발생하는 이슈였습니다. 맥 OS와 아마존 리눅스 LANG 설정 차이 OS의 LANG에 대해 전혀 인지를 못해 발생했었습니다. 이런 경우 서로 서버의 LANG을 맞춰주는 것보단 조회 쿼리에서 데이트 포맷을 명시적으로 맞춰주는게 좋아보입니다. EC2 인스턴스가 여러가지 이유들로 교체될 수도 있고 로컬 Lang 또한 상황에 따라 바뀔수도 있기 때문입니다. NLS_LANG이란 것이 등장하는데 OS 계정의 환경 변수를 말합니다. .. 2022. 8. 25.
[Error-Log] MultipleBagFetchException 해결법 발단: 예전에 프로젝트를 진행하다가 EntityGraph를 사용해 Nested된 클래스들을 가져오는 코드를 짰었다. 그러나 메소드를 실행하는 과정에서 MultipleBagFetchException 예외가 터졌다. 원인은 여러 개의 oneToMany 관계를 가져와서였다. Bag이란? Hibernate에는 Bag이라는 컬렉션 타입이 있다. 자바 프레임워크가 아닌 요소이며 List와 비슷하게 중복 요소를 포함하나 순서가 보장되진 않는 컬렉션이다. 스프링 JPA에서는 기본적으로 컬렉션을 사용해 Many 관계를 매핑한다. Hibernate는 이러한 컬렉션을 Hibernate에서 만든 컬렉션으로 감싼다. List -> PersistentBag Set -> PersistentSet Map -> PersistentM.. 2022. 4. 16.
스프링 Java 8 LocalDateTime 직렬화 역직렬화 오류 해결 방법 Java 8 date/time type java.time.LocalDateTime not supported by default LocalDataTime을 역직렬화하지 못해서 생기는 문제입니다. jackson-datatype-jsr310 종속성을 추가하고 해결해야 됩니다. //자바 역직렬화 문제 해결 패키지 implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310' implementation 'com.fasterxml.jackson.core:jackson-databind' 추가적으로 만약 캐시로 사용할 객체에 LocalDateTime 타입의 값이 존재한다면 위처럼 @JsonSerialize, @JsonDeserialize 어노테이션을 기.. 2022. 2. 5.
[Error-Log] ConcurrentModificationException 해결법 @OnetoMany에서 collection 삭제할 때 에러 해결 방법 프로젝트에서 상품 이미지를 수정하려고 할 때 이미지를 새로 올리도록 설정해놨습니다. 그렇기 때문에 기존 이미지 url들을 삭제한 후에 이미지를 업로드하는 로직으로 구성하는 와중에 생긴 에러입니다. orphanremoval 설정을 해두어 url쪽의 FK만 null로 설정해줘도 연관 관계가 끊기게 되고 자동으로 해당 url 엔티티는 delete가 됩니다. 그러나 일반적으로 for을 사용해서 삭제를 진행하게 되면 삭제될 때마다 index가 바뀌어 제대로 삭제가 진행되지 않으면서 ConcurrentModificationException 에러를 띄우게 됩니다. for(Url url : productById.getUrlList()) { url.s.. 2022. 2. 4.
스프링 레디스 Redis 에러 Creating Server TCP listening socket *:6379: bind: No error 실행 환경 - 윈도우 , redis 3.0.504 버전 혹시나 이 오류를 만나셨다면 1. cmd를 관리자 권한으로 실행 시켜주세요 2. redis-cli.exe를 실행 시켜주세요 3. shutdown을 입력한 후에 exit로 종료해주세요 4. redis-server.exe redis.windows.conf를 cmd 창에 입력하면 redis server가 실행됩니다!! 2022. 1. 18.
entitygraph 사용시 주의할 점 다중 엔티티 그래프를 사용할땐 주의할 점이 있습니다.. 몰랐던 부분인데 JPA에서 Fetch join의 조건이 있었습니다. ToOne 관계는 몇 개든 사용할 수 있다 ToMany 관계는 다중 그래프 관계에서 한 곳만 쓸 수 있다. 기존 코드에서는 ToMany 관계가 두 개 모두 되어 있어 이러한 에러를 만나게 되었습니다. org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags: [com.ireland.ager.account.entity.Account.products, com.ireland.ager.product.entity.Product.urlList] @NamedEntityGraph( name = .. 2022. 1. 18.