inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기

ProjectSkill과 Skill 객체 생성 관련 질문있습니다.

해결된 질문

130

D Kim

작성한 질문수 6

0

테스트코드 작성하는 강의를 막 마치고, html '/test' 생성하여 확인하는 강의를 진입하여 듣던중,

test만 돌리다 오랜만에 datainitilizer가 불리도록 run을 하니,

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataInitializer': Invocation of init method failed

Caused by: org.hibernate.TransientPropertyValueException: Not-null property references a transient value - transient instance must be saved before current operation : com.mkim.portfolio.domain.entity.ProjectSkill.skill -> com.mkim.portfolio.domain.entity.Skill

 

이런 에러가 발생하였습니다.
테스트코드 작성 강의전에는 정상적으로 datainitializer 호출되었고, 테스트 케이스도 전부 패스한 상황이라 무엇이 문제인가 계속 확인을 하는데 이해한 바로는 ProjectSkill이 Skill 엔티티를 참조해야하지만 아직 생성이 안된 상태라 발생하는것처럼 이해하였는데,

 

val java = Skill(name = "Java", type = SkillType.LANGUAGE.name, isActive = true)
val kotlin = Skill(name = "Kotlin", type = SkillType.LANGUAGE.name, isActive = true)
val python = Skill(name = "Python", type = SkillType.LANGUAGE.name, isActive = true)
val spring = Skill(name = "Spring", type = SkillType.FRAMEWORK.name, isActive = true)
.
.
.

skillRepository.saveAll(
     mutableListOf(
          java,
          kotlin,
          spring,
          .
          .
          .
)

.
...
.....



project1.skills.addAll(
      mutableListOf(
           ProjectSkill(project = project1, skill = java),
           ProjectSkill(project = project1, skill = spring),
           ProjectSkill(project = project1, skill = mysql),
           ProjectSkill(project = project1, skill = redis)
       )
)

이렇게 작성하여 부르면 에러가 나지만

val skills = mutableListOf(
    Skill(name = "Java", type = SkillType.LANGUAGE.name, isActive = true),
    Skill(name = "Kotlin", type = SkillType.LANGUAGE.name, isActive = true),
    Skill(name = "Python", type = SkillType.LANGUAGE.name, isActive = true),
    Skill(name = "Spring", type = SkillType.FRAMEWORK.name, isActive = true),
    Skill(name = "Django", type = SkillType.FRAMEWORK.name, isActive = true),
    Skill(name = "MySQL", type = SkillType.DATABASE.name, isActive = true),
    Skill(name = "Redis", type = SkillType.DATABASE.name, isActive = true),
    Skill(name = "Kafka", type = SkillType.TOOL.name, isActive = true)
)
skillRepository.saveAll(skills)



.
...
.....


project1.skills.addAll(
      mutableListOf(
          ProjectSkill(project = project1, skill = skills[0]),  // Java
          ProjectSkill(project = project1, skill = skills[3]),  // Spring
          ProjectSkill(project = project1, skill = skills[5]),  // MySQL
          ProjectSkill(project = project1, skill = skills[6])   // Redis
      )
)

 

이와 같이하면 에러가 살아집니다...

무엇이 달라 차이를 만드는지가 너무 궁금하여 질문 남겨요

감사합니다,

 

전체 현재까지 코드 깃허브

kotlin mysql docker spring-boot jpa

답변 1

0

정보근

안녕하세요 정보근입니다:)

 

오류가 난다는 소스 코드 살펴보니

skillRepository.saveAll() 메소드에서 python이 누락되어 있네요.

Skill 테이블에 python 엔티티가 저장되어 있지 않은데(또는 영속 상태가 되지 않았는데),

Project와 Skill을 연결하는 ProjectSkill에 존재하지 않는 skill을 넣고 저장하려고 해서 문제가 발생했습니다.

 

감사합니다.

 

Windows 환경에서 작업중

0

87

1

강의 자료 다운로드에 관해

0

163

2

도커 파일을 빌드 시킬때 오류가 발생하는데 무슨 에러인가요..

0

177

2

Admin 뷰 템플릿 유료화 여부 및 변경 사항 문의드립니다.

0

235

2

테스트 코드 작성 중 AssertionError 발생

0

276

4

메모리 크기

0

135

2

클래스 생성 강의 수강 중 오류 발생

0

127

1

리액트 연결

0

158

2

Docker Compose 배포 시 Jasypt 암호화된 속성 복호화 문제 해결 방법

1

293

2

도커로 크롬에서 프로그램 열기

0

304

2

DBeaver 연결부터 도커로프로젝트 빌드까지 안됩니다.

0

325

2

뷰 개발 파일 없음

0

152

2

fragment 분리 에러

0

127

1

admin 페이지에서 projectSkill 질문 있습니다

0

117

2

서버 배포 후 수정하려고 하면

0

295

2

docker-compose 파일 작성하기 질문 있습니다.

0

288

2

Admin 뷰개발-테이블 페이지와 관련한 질문드립니다.

0

187

1

Docker 데스크탑에서 push to Docker hub 를 클릭한 후 오류가 납니다...

0

386

3

ExperienceRepositoryTest 실행 오류

0

144

2

projectRepository assertion 오류 질문입니다.

0

189

1

테스트코드 실행중 오류와 경고에 관한 질문 입니다.

0

243

2

@PostCunstructer 를 사용하는 이유가 뭔가요?

0

286

2

환경변수 설정을 yml 아니라 properties로 해도 상관 없나요?

0

122

1

git 사용 오류 질문 드립니다

0

213

2