전체 글
-
[SPRING] HV000151: A method overriding another method must not redefine the parameter constraint configuration, but method MemberServiceImpl#signup(SignupRequestDto) redefines the configuration of MemberService#signup(SignupRequestDto).에러 일기 2023. 1. 18. 10:47
service 디렉토리에서 service 클래스 하나를 'service' 인터페이스와 'serviceImpl' 클래스로 나누었다. 이때 service 인터페이스에서 정의한 메서드를 serviceImpl 클래스에서 오버라이딩하여 구현하는 로직이다. 이때 service 인터페이스에 있는 메서드의 매개변수와 serviceImpl 클래스에 있는 메서드의 매개변수가 다를 때 발생하는 에러였다.
-
[SPRING] No serializer found for class org.hibernate.proxy.pojo.bytebuddy.ByteBuddyInterceptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)에러 일기 2023. 1. 10. 16:41
엔티티 객체와 다른 엔티티 객체가 연관관계에 놓여있을 때, 이것을 조회하면 무한루프에 걸릴 위험이 있기 때문에 한쪽에서 @JsonIgnore를 선언해주어서, 제대로 값이 응답되길 바라며 포스트맨을 시도했다. 그러나 이런 에러가 나왔다. 연관관계 양쪽을 전부 @JsonIgnore를 했을 때는 에러가 나오지 않고, 응답받은 값에 연관관계 데이터가 아예 사라진 모습이다. 개념적으로 접근한다면, 연관관계 객체가 현재 자기 자신이 아니라, 프록시객체로 되어있는 상태이다. 에러 내용에 있는 'bytebuddy' 이게 프록시 객체를 만들어주는 라이브러리이다. 조회할 데이터에서는 연관관계 객체를 조회하기 위해 해당 객체명을 찾았을텐데, 그 객체가 프록시로 바뀌면서 형태가 변형된 것이다. 그래서 에러가 떳던 것이다. H..
-
[SPRING] Cannot call sendError() after the response has been committed에러 일기 2023. 1. 10. 15:55
순환참조 에러이다. 테이블과 테이블이 연관 관계를 맺었을 때, api 응답으로 데이터를 보내줄 경우 보내려는 객체 안에 연관관계 객체가 있고, 그 연관관계 객체 안에 내가 보내려는 객체가 또 있는 상황이 발생했다. Order 클래스 @Entity @Table(name = "orders") @Getter @Setter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Order { @Id @GeneratedValue @Column(name = "order_id") private Long id; @ManyToOne(fetch = LAZY) @JoinColumn(name = "member_id") private Member member; // 🔥..
-
[SPRING]Invocation of init method failed; nested exception is java.lang.NullPointerException에러 일기 2023. 1. 10. 15:18
init() 이라는 메서드를 실행하지 못했다라는 뜻이었다. init()이 호출하는 메서드 dbInit1()에 코드를 잘못 적은게 있었다. 바로 의존성 주입받은 EntityManager를 @RequireArgsConstructor로 선언하는데 'private EntityManager em' 이라고 쓴 것이다. @RequireArgsConstructor는 'final'을 인식해 자동으로 의존성주입을 시켜주는 것이라서 문제가 발생한 것이었다. 'final'을 추가해주니 바로 해결되었다.
-
[SPRING] 더미데이터를 만들어보장Spring Boot 2023. 1. 10. 15:09
더미데이터 추가하는 클래스 InitDb를 application이 있는 디렉토리 위치에 만든다. 뼈대를 그려보자. InitDb 안에 static 클래스로 InitService를 만들고 그안에 데이터를 추가해주는 dbInit1 메서드를 만든다. 그리고 각각 빈으로 등록해준다. @Component public class InitDb { @Component static class InitService { public void dbInit1(){ } } } 더미 데이터를 짜고 EntityManager에 persist한다. @Component public class InitDb { @Component static class InitService { @PersistenceContext EntityManager em;..
-
-
[SPRING]InvalidDefinitionException, non-static inner classes like this can only by instantiated using default, no-argument constructor에러 일기 2023. 1. 10. 13:23
DTO에 대해 인강을 따라하면서 CreateMemberRequest 라는 DTO를 같은 위치의 클래스로 뒀는데 에러가 발생했다. public을 static으로 바꾸면서 해결이 되었는데, 아마 public은 'new'로 객체를 생성하는 방식으로 사용해야 하는 것인데 파라미터로 전달받을 땐 new로 전달받는게 아니여서 그런것 같다. 어차피 평소엔 DTO 폴더를 따로 파서 관리하는데 그때는 public으로 써도 에러가 발생하지 않으니 이후에 같은 에러가 발생한다면 다른 상황이겠지?
-