Skip to content

마이바티스 entity를 list로 불러올때 주의할 점 #85

@kyupid

Description

@kyupid

문제

List<Map<String, Objet> 로 받아오면 잘 받아와짐
근데 List<Entity> 형식으로 받아오면 난데없는 IndexOutOfBoundsException 이 발생

해결

마이바티스의 resultMap, resultType에 대한 이해가 필요함
Entity에 인자없는 생성자가 필요함

아래 링크에 따르면

이는 resultMap의 특성 때문인데, 해당 기능을 사용할 경우 (+resultType 을 사용할 때 객체를 넘겨줄 경우 동일하다.) Mybatis가 미리해당 인스턴스를 생성하게 된다. 하지만 위의 엔티티는 모든 인자가 포함된 생성자 (Builder) 만이 존재하기 때문에 인스턴스를 생성할 수 없어 문제가 발생하게 되는 것이다.

출처: https://lob-dev.tistory.com/35 [Lob!]

라고 하는데 이해가 안감
마이바티스가 미리 해당 인스턴스를 생성하는거랑 인자없는 생성자 연관관계가 있다면
인자없는 생성자를 생성해서 setter로 데이터를 지정하는 줄 알았는데
setter가 없어도 잘 select해오기 때문에 그것도 아님

하지만
mybatis/mybatis-3#1567 (comment)
위 마이바티스 리포 이슈에도 있는데
내가 알아야할건 , MyBatis needs to instantiate the Account object first 이것 뿐인거같다.
instantiate 한다는 말은 인자없이 클래스를 인스턴스화한다는 말인가보다

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions