我正在使用 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\ 实体时,尽管两个表中都有有效数据,但详细信息始终为空。检查数据库我注意到 \CurveDetail\ 表中没有外键约束,所以我想知道 ¿ 这些约束是正确映射数据库所必需的吗?我没有尝试自己添加 FK 约束,因为我不被允许(必须请 DBA 来做,这需要一周时间)。
提前致谢!