728x90
코틀린에서 @OneToMany 사용 시 다음과 같은 오류가 발생하는 경우가 있습니다.
org.hibernate.AnnotationException: Collection has neither generic type or OneToMany.targetEntity() defined:
발생하는 코드는 다음과 같습니다.
@Entity
@Table(name = "parent_category")
@DiscriminatorValue("P")
class ParentCategory(
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY)
var child: List<ChildCategory> = ArrayList(),
name: String,
) : MyCategory(name = name) {
}
원인은 코틀린의 List에 있었습니다.
List<out E>로 선언되어있는 코드는 자바로 바꾸면 List<? extends E> 입니다.
따라서 위와 같은 예외가 발생한 것입니다.
이를 해결하기 위해서는 MutableList를 사용하여야 합니다.
MutableList는 다음과 같이 선언되어 있습니다.
해결된 코드는 다음과 같습니다.
@Entity
@Table(name = "parent_category")
@DiscriminatorValue("P")
class ParentCategory(
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY)
var child: MutableList<ChildCategory> = ArrayList(),
name: String,
) : MyCategory(name = name) {
}
Reference
728x90
'코틀린 > JPA' 카테고리의 다른 글
[코틀린][JPA] - 코틀린에서 JPA를 사용할 때 Optional 대신 nullable타입 사용하기 (0) | 2022.07.28 |
---|---|
[JPA] 코틀린에서 지연로딩이 작동되지 않을 때 (0) | 2022.07.23 |