2014-03-07 4 views
1

나는 다음과 같은 매핑이 있습니다최대 절전 모드, 특정 엔티티 매핑에 유래

@Entity 
public class Satellite implements Serializable, Comparable<Satellite> { 
    @NotNull @Id 
    private long id; 
    ..... 
    @OrderColumn 
    @OneToMany(mappedBy = "satellite", cascade = CascadeType.ALL, fetch = FetchType.EAGER) 
    private List<DataModel> dataModel; 
} 

와 아이 엔티티 :

@Entity @IdClass(value=DataModelPK.class) 
public class DataModel implements Serializable, Comparable<DataModel> { 
    private static final long serialVersionUID = -3416403014857250990L; 
    @Id 
    private int orbit;  // related to reference orbit file 
    private int dataPerOrbit; // in Gbit 
    @ManyToOne @Id 
    private Satellite satellite; 
} 

원래 DataModel는 임베디드 엔티티했지만를 통해 더 나은 제어를 기본 키 및 db의 기본 구조, 나는 더 전통적인 모델로 전환했습니다.

요점은, 엔티티를로드하는 중에 스택 오버 플로우가 발생한다는 것입니다. 그 두 엔티티 사이에 순환 로딩이 있다고 생각합니다.

나는 모든 것을 원래대로 되 돌리는 것이 좋겠지 만, 왜 이것이이 오류를 내는지 이해하고 싶습니다.

+0

이 코드는 처음에는 잘 보였으며 문제는 다른 곳에서 발생한다고 생각합니다. 스택 추적을 게시 할 수 있습니까 (반복을 생략 할 수 있습니까)? –

+0

DataModelPk 클래스의 코드를이 게시물에 추가 할 수 있습니까? – user3360944

답변

0

DataModel에 대한 @IdClass가 DataModelPK.class로 지정되었지만 @Id 주석이 int 필드에 있습니다.

이 문제는 stackoverflow가 발생할 수 있지만 확실하지 않습니다.

업데이트 이제 두 번째 @ 아이디 주석을 볼 수있게되었으므로 수정되었습니다. 나는 범인을 조사 할 것입니다.

+0

그것은 복합 pk (궤도 위성)입니다. 다른 클래스는 래퍼 일뿐입니다. 이것이 올바른 방법이라고 생각했지만 더 자세히 조사 할 것입니다. –

관련 문제