EclipseLink を使用して、データベース (Oracle 11g) を JPA エンティティにマッピングしています。ほとんどすべてのテーブルを JPA オブジェクトにマップしましたが、問題が見つかりました。
\Curve\ エンティティには、次のフィールドがあります。
@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;
\CurveDetail\ エンティティには、次のものがあります。
@ManyToOne
@JoinColumns({
@JoinColumn(name = "COD_CURVE", referencedColumnName = "COD_CURVE"),
@JoinColumn(name = "FEC_HISTORIC", referencedColumnName = "FEC_HISTORIC")
})
private Curve codCurve;
問題は、\Curve\ エンティティをクエリすると、両方のテーブルに有効なデータがあるにもかかわらず、詳細が常に null になることです。データベースをチェックすると、\CurveDetail\ テーブルに外部キー制約がないことに気がついたので、これらの制約はデータベースを正しくマップするために必要ですか? 許可されていないため、自分で FK 制約を追加しようとはしていません (DBA に依頼する必要があり、1 週間かかります)。
前もって感謝します!