Claim
(親) とClaimInsurance
(子)の 2 つのクラスがあります。それらは次のとおりです。
public class Claim {
private SortedSet<ClaimInsurance> claimInsurances = new TreeSet<ClaimInsurance>();
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="claim", orphanRemoval=true)
@Sort(type=SortType.NATURAL)
public SortedSet<ClaimInsurance> getClaimInsurances() {
return this.claimInsurances;
}
public void setClaimInsurances(SortedSet<ClaimInsurance> claimInsurances) {
this.claimInsurances = claimInsurances;
}
}
と:
public class ClaimInsurance implements java.io.Serializable, Comparable<ClaimInsurance> {
private Claim claim;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ClaimId", nullable=false)
public Claim getClaim() {
return this.claim;
}
public void setClaim(Claim claim) {
this.claim = claim;
}
}
を削除しようとすると、Claim
次の例外が発生します
org.hibernate.exception.ConstraintViolationException: could not delete: [com.omnimd.pms.beans.Claim#201]
...
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The DELETE statement conflicted with the REFERENCE constraint "FK_RCMSClaimInsuranceTable_RCMSClaimTable". The conflict occurred in database "Omnimdv12", table "dbo.RCMSClaimInsuranceTable", column 'ClaimId'.
claimInsurances
クラスのマッピングを次のように変更するとClaim
、すべて正常に動作します。
private Set<ClaimInsurance> claimInsurances = new HashSet<ClaimInsurance>();
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="claim", orphanRemoval=true)
public Set<ClaimInsurance> getClaimInsurances() {
return this.claimInsurances;
}
public void setClaimInsurances(Set<ClaimInsurance> claimInsurances) {
this.claimInsurances = claimInsurances;
}
Set
マッピングで( )を使用すると問題が発生するようですが、HashSet
代わりにSortedSet
( TreeSet
) を使用するとエラーが発生します。
実際の問題は何ですか?私は何が欠けていますか?