私はこの自己結合エンティティを持っています:
@Entity
@Table(name = "PackageTemplate")
public class PackageTemplate implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(unique = true, nullable = false)
private Long idPackageTemplate;
private Byte status;
// bi-directional many-to-one association to PackageTemplate
@ManyToOne(fetch = FetchType.LAZY, cascade = { CascadeType.ALL })
@JoinColumn(name = "packageTemplate")
private PackageTemplate packageTemplate;
// bi-directional many-to-one association to PackageTemplate
@OneToMany(mappedBy = "packageTemplate", cascade = { CascadeType.ALL })
@JoinTable(name = "PackageTemplate", joinColumns = { @JoinColumn(name = "packageTemplate", nullable = true) }, inverseJoinColumns = { @JoinColumn(name = "idPackageTemplate", nullable = false) })
private List<PackageTemplate> packageTemplateList;
public PackageTemplate() {
}
public Long getIdPackageTemplate() {
return this.idPackageTemplate;
}
public Byte getStatus() {
return this.status;
}
public void setStatus(Byte status) {
this.status = status;
}
public PackageTemplate getPackageTemplate() {
return this.packageTemplate;
}
public void setPackageTemplate(PackageTemplate packageTemplate) {
this.packageTemplate = packageTemplate;
}
public List<PackageTemplate> getPackageTemplateList() {
return this.packageTemplateList;
}
public void setPackageTemplateList(List<PackageTemplate> packageTemplateList) {
this.packageTemplateList = packageTemplateList;
}
}
packageTemplate 設定 PackageTemplateList を更新すると、機能しません。関連項目は父親との関係を維持します。
エラーは表示されませんでしたが、カスケードは何もしていないようです。
何か案が?
解決、 JB Nizetは正しかった。問題は「packageTemplateList の mappedBy」でした。
コードは次のようになります。
// bi-directional many-to-one association to PackageTemplate
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "packageTemplate")
private PackageTemplate packageTemplate;
// bi-directional many-to-one association to PackageTemplate
@OneToMany
@JoinColumn(name = "packageTemplate")
private List<PackageTemplate> packageTemplateList;
このコードは現在機能しています。