강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

문주영님의 프로필 이미지
문주영

작성한 질문수

[섹션7.스프링 DB 접근기술 - JPA] "IllegalStateException: 이미 존재하는 회원입니다" 중복 회원 예외 테스트 오류

해결된 질문

작성

·

30

·

수정됨

0

[섹션7.스프링 DB 접근기술 - JPA] 수강중에

MemberServiceTest 테스트는 오류가 없는데요
MemberServiceIntegrationTest 테스트는 오류가 생기네요.
도대체 뭐가 잘못됐는지 모르겠습니다.

꼭 답변 부탁드립니다.

 

MemberService (오류 메세지에서 가리키는곳 입니다.)


package hello.hello_spring.service;

import hello.hello_spring.domain.Member;
import hello.hello_spring.repository.MemberRepository;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Optional;

@Transactional
public class MemberService {

    private final MemberRepository memberRepository;

    public MemberService(MemberRepository memberRepository) {
        this.memberRepository = memberRepository;
    }

    /*
        회원 가입
        */
    public Long join (Member member) {
        //같은 이름이 있는 중복 회원X
        validateDuplicateMember(member);
        memberRepository.save(member);
        return member.getId();
    }

    private void validateDuplicateMember(Member member) {
        memberRepository.findByName(member.getName())
                .ifPresent(m -> {
                    throw new IllegalStateException("이미 존재하는 회원입니다.");
                });
    }

    /*
    * 전체 회원 조희
    * */
    public List<Member> findMembers() {
        return memberRepository.findAll();
    }

    public Optional<Member> findOne(Long memberId) {
        return memberRepository.findById(memberId);
    }
}

오류 메세지

Hibernate: select m1_0.id,m1_0.name from member m1_0 where m1_0.name=?

java.lang.IllegalStateException: 이미 존재하는 회원입니다.
	at hello.hello_spring.service.MemberService.lambda$validateDuplicateMember$0(MemberService.java:33)
	at java.base/java.util.Optional.ifPresent(Optional.java:178)
	at hello.hello_spring.service.MemberService.validateDuplicateMember(MemberService.java:32)
	at hello.hello_spring.service.MemberService.join(MemberService.java:25)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
	at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
	at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:727)
	at hello.hello_spring.service.MemberService$$SpringCGLIB$$0.join(<generated>)
	at hello.hello_spring.service.MemberServiceIntegrationTest.중복_회원_예외(MemberServiceIntegrationTest.java:37)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)

 

답변 1

0

문주영님의 프로필 이미지
문주영
질문자

강의 다시보면서 해보니 됐습니다. H2에서 delete from MEMBER; 해주면 될 일이었네요

문주영님의 프로필 이미지
문주영

작성한 질문수

질문하기