EclipseLink를 사용하여 데이터베이스 (Oracle 11g)를 JPA 엔티티에 매핑합니다. 나는 JPA 객체에 거의 모든 테이블을 매핑했지만 난 그냥 문제를 발견했습니다 :이 가지고있는 \ CurveDetail \ 엔티티에서컬렉션이 OneToMany 관계로 채워지지 않습니다. - EclipseLink
@Id
@Column(name = "COD_CURVE")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq.gen")
@SequenceGenerator(name = "seq.gen.curve", sequenceName = "SEQCURVE", allocationSize = 1)
private long codCurve;
@Id
@Column(name = "FEC_HISTORIC")
@Temporal(javax.persistence.TemporalType.DATE)
private Date fecHistoric;
@OneToMany(mappedBy="codCurve", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Collection<CurveDetail> detailsCollection;
:의 \ 곡선 \ 엔티티에서
을 나는 다음과 같은 필드가 :
@ManyToOne
@JoinColumns({
@JoinColumn(name = "COD_CURVE", referencedColumnName = "COD_CURVE"),
@JoinColumn(name = "FEC_HISTORIC", referencedColumnName = "FEC_HISTORIC")
})
private Curve codCurve;
문제는 내가 \ 곡선 \ 개체를 쿼리 할 때 항상 세부 사항은 두 테이블에서 유효한 데이터가 있다는 사실에도 불구하고, null이 있다는 것입니다. 데이터베이스 확인 \ CurveDetail \ 테이블에 외래 키 제약 조건이 없다는 것을 알았으므로이 제약 조건이 데이터베이스를 올바르게 매핑해야합니까? 나는 (DBA에게 요청해야하고, 일주일은 걸릴 것입니다) 허용되지 않았기 때문에 FK 제약 조건을 직접 추가하려하지 않았습니다.
미리 감사드립니다.
관계를 설정할 때 양면을 설정하고 있습니까? manyToOne은 관계를 제어하므로 변경 사항이 db에 유지되도록 최소로 설정해야하지만 둘 다 앱에서 유지 관리해야합니다. – Chris
@Chris 양면을 설정하면 무엇을 의미합니까? 나는 방금 쿼리를 실행 중이며 데이터를 업데이트하거나 삽입하지 않습니다. Curve에서 \ SELECT o를 선택하면 \ CurveDetail \ collection이 비어있는 모든 커브가 반환됩니다.이 경우 문제가 발생합니다. – CocheLee
새로 고침을 시도하면 캐시가 손상되는 문제가 발생합니까? EclipseLink는 빈 컬렉션을 만듭니다. 데이터베이스에서 구축되었습니다. 컬렉션에 어떻게 그리고 어디에서 액세스하고 있습니까? 엔티티 외부에있는 경우 액세서 메소드를 사용하고 있는지 확인하십시오. – Chris