강의

멘토링

커뮤니티

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

leewooyeon3님의 프로필 이미지
leewooyeon3

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

JPA와 DB 설정, 동작확인

MemberRepository 에러

작성

·

599

0

package jpabook.jpashop;

import jpabook.jpashop.Member;
import jpabook.jpashop.MemberRepository;
import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class MemberRepositoryTest {
    @Autowired MemberRepository memberRepository;

    @Test
    public void testMember() throws Exception{
        Member member = new Member();
        member.setUsername("memberA");
        Long savedId = memberRepository.save(member); Member findMember = memberRepository.find(savedId);
        Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());

        Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername());



    }
}

에러코드

Cause: cannot assign instance of java.lang.StackTraceElement to field java.lang.StackTraceElement.moduleVersion of type java.lang.String in instance of java.lang.StackTraceElement


멤버
package jpabook.jpashop;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
@Getter @Setter
public class Member {
    @Id @GeneratedValue
    private Long id;
    private String username;

}


멤버리포지토리

package jpabook.jpashop;

import jpabook.jpashop.Member;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;


public class MemberRepository {
    @PersistenceContext
    EntityManager em;

    public Long save(Member member) {
        em.persist(member);
        return member.getId();
    }
    public Member find(Long id) {
        return em.find(Member.class, id);
    }
}


yml

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/jpashop
    username: sa
    password:
    driver-class-name: org.h2.Driver

  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
#        show_sql: true
        format_sql: true

logging.level:
  org.hibernate.SQL: debug
#  org.hibernate.type: trace

캡처.JPGh2 데이터베이스

답변 1

0

안녕하세요. leewooyeon3님, 공식 서포터즈 OMG입니다.

 

콘솔에 출력된 전체 에러메시지를 올려주세요.

감사합니다.

leewooyeon3님의 프로필 이미지
leewooyeon3
질문자

Cause: cannot assign instance of java.lang.StackTraceElement to field java.lang.StackTraceElement.moduleVersion of type java.lang.String in instance of java.lang.StackTraceElement

해당 에러메시지를 포함한 인텔리제이 화면도 같이 보여주실수 있을까요?

leewooyeon3님의 프로필 이미지
leewooyeon3
질문자

에러코드가 해결 안된상태에서 엔티티 클래스 개발2까지 진행했다가

다시 Member부분을 수정하고 실행하였더니 에러코드가 더 많아졌네요

Member
package jpabook.jpashop.domain;

import lombok.Getter;
import lombok.Setter;


import javax.persistence.*;
import javax.persistence.criteria.Order;
import java.util.ArrayList;
import java.util.List;

@Entity
@Getter @Setter
public class Member {
    @Id @GeneratedValue
    //@Column(name="member_id")
    private Long id;
    private String username;

    //@Embedded
    //private Address address;

    //@OneToMany(mappedBy = "member")
    //private List<Order> orders = new ArrayList<>();
}

멤버 리포지토리
package jpabook.jpashop;

import jpabook.jpashop.domain.Member;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;


public class MemberRepository {
    @PersistenceContext
    EntityManager em;

    public Long save(Member member) {
        em.persist(member);
        return member.getId();
    }
    public Member find(Long id) {
        return em.find(Member.class, id);
    }
}

리포지토리 테스트
package jpabook.jpashop;

import jpabook.jpashop.domain.Member;
import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;

import javax.transaction.Transactional;

@RunWith(SpringRunner.class)
@SpringBootTest
public class MemberRepositoryTest {
    @Autowired MemberRepository memberRepository;

    @Test
    @Transactional
    @Rollback(false)
    public void testMember() throws Exception{
        Member member = new Member();
        member.setUsername("memberA");
        Long savedId = memberRepository.save(member);
        Member findMember = memberRepository.find(savedId);

        Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());
        Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername());

    }
}

image

에러코드가 달라졌습니다.

이후 남기신 질문에서 답변 드렸는데 해결 안되면 댓글남겨주세요.

leewooyeon3님의 프로필 이미지
leewooyeon3

작성한 질문수

질문하기