Web上の多くの例を見て、複合キーを機能させるために数日間努力してきましたが、機能していないため、まだ何かが欠けています。
以下のコードでは、FMX.modelRiskMitigantとFMX.modelFacilityが正しく設定されていますが、hibernateはDB列にnullを設定しようとしています!
@Entity
@Table(name="FACILITY_MITIGANT_XREF")
@IdClass(FMXPK.class)
public class FMX implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="FACILITY_ID")
private Long facilityId;
@Id
@Column(name="RISK_MITIGANT_ID")
private Long riskMitigantId;
@ManyToOne
@JoinColumn(name="FACILITY_ID", insertable=false, updatable=false)
private Facility modelFacility;
@ManyToOne
@JoinColumn(name="RISK_MITIGANT_ID", insertable=false, updatable=false)
private RiskMitigant modelRiskMitigant;
}
public class FMXPK implements Serializable {
private static final long serialVersionUID = 1L;
private Long facilityId;
private Long riskMitigantId;
}
@Entity
@Table(name="MODEL_FACILITY")
public class Fac implements Serializable {
private static final long serialVersionUID = 1L;
@OneToMany(mappedBy="modelFacility", fetch=FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval=true)
private Set<FMX> facilityMitigantXrefs;
}
@Entity
@Table(name="MODEL_RISK_MITIGANT")
public class RiskMitigant implements Serializable {
private static final long serialVersionUID = 1L;
@OneToMany(mappedBy="modelRiskMitigant", fetch=FetchType.EAGER, cascade = CascadeType.ALL)
private Set<FMX> facilityMitigantXrefs;
}