У меня есть эта автообъединение сущность:Hibernate многие-к-одному автообъединение обновление ассоциации каскад не работает
@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 был прав. Проблема заключалась в «mappedBy in packageTemplateList».
Код должен быть что-то вроде этого:
// 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;
Этот код теперь работает.
Покажите нам свой код (код, который создает и добавляет шаблоны пакетов), и исправьте свое сопоставление. 'mappedBy' означает: отображение этой ассоциации находится на другой стороне ассоциации. Поэтому у вас не должно быть аннотации JoinTable на packageTemplateList. См. Http://stackoverflow.com/questions/19896025/understanding-annotations-and-jpahibernate/19896470#19896470 –