inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

[실습] 데이터베이스 초기화

mutableListOf

해결된 질문

157

작성자 없음

작성한 질문수 0

0

강의를 들으면서 코틀린 문법도 같이 병행하면서 듣고있는데 이부분 질문을 하고 싶습니다!

image.png

mutableListOf 로 감싸줘서 넣어져야지 코드가 오류 없이 되는지 궁금합니다.

jpa 특성상 그런건가용?

kotlin mysql docker spring-boot jpa

답변 1

0

정보근

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

 

말씀하신 부분은 JPA 특성이라기보단 자바/코틀린 문법입니다.

 

saveAll() 메소드의 맥북 기준 cmd+B를 누르시면,

ListCrudRepository 인터페이스를 확인하실 수 있으실텐데요.

아래와 같이 파라미터로 Iterable을 받을 수 있게 되어있습니다.

즉 Iterable의 구현체들만 파라미터로 들어갈 수 있습니다.

<S extends T> List<S> saveAll(Iterable<S> entities);

 

원하시는 것은 파라미터로 넣기 위해 리스트 등 Iterable의 구현체를 따로 사용하지 않고,

각 요소 하나하나를 파라미터로 넣고 싶어하시는 것 같은데요.

이럴 경우 메소드 정의를 파라미터 1개, 파라미터 2개, 이런 식으로 전부 정의하면 사용성이 좋지 않겠죠.

그 때 사용하는 게 가변인자입니다.

아래 코드처럼 vararg 키워드를 사용하는 파라미터를 받는 saveAll() 메소드를 새로 정의해줬습니다.

interface AchievementRepository : JpaRepository<Achievement, Long> {

    fun saveAll(vararg achievements: Achievement )

    // select * from achievement where is_active = :isActive
    fun findAllByIsActive(isActive: Boolean): List<Achievement>

}

위와 같이 새 메소드를 정의해줄 경우 아래 코드처럼 리스트를 받을 수도 있고, 개별 인자를 여러 개 받을 수도 있습니다.

achievementRepository.saveAll(mutableListOf(achievement1, achievement2))
achievementRepository.saveAll(achievement1, achievement2)

위의 메소드에서 cmd+B를 누르시면 ListCrudRepository로, 아래 메소드에서 누르시면 저희가 정의한 AchievementRepository로 이동하는 것을 확인하실 수 있으실 거에요.

 

이렇게 할 경우 코틀린 문법상 문제는 없습니다.

하지만 실행을 시켜보시면 No property 'saveAll' found for type 'Achievement'와 같이 오류가 뜹니다.

스프링 데이터 JPA에서 saveAll이 가변인자 방식으로 인자를 받는 것을 지원하지 않는 것으로 보이네요.

 

좀 더 자세한 내용은 '가변인자'를 키워드로 검색해보시면 좋을 것 같습니다.

 

감사합니다.

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