我正在尝试在Hibernate 4.3.5/JPA2对象中使用orphanRemoval,但它似乎没有像我预期的那样工作.但是,如果我做错了什么,或者这仍然是Hibernate中的错误,我不确定.
鉴于以下关系(为了简洁省略了@Version,getters和setter):
@Entity
public class Provider implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
private String name;
@OneToMany(orphanRemoval=true,cascade=CascadeType.REMOVE)
@JoinColumn(name="provider_id", referencedColumnName="id")
private List<Contract> contracts;
}
@Entity
public class Contract implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
private String volume;
@OneToMany(orphanRemoval=true,cascade=CascadeType.REMOVE) // delete any attachments that were previously uploaded with this contract
@JoinTable(name="contract_attachment", joinColumns = @JoinColumn(name = "contract_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "attachment_id", referencedColumnName = "id"))
private …
Run Code Online (Sandbox Code Playgroud) 我有一堂课叫News
. 任何新闻都可以有很多Photo
。这些是我的桌子
news news_photo photo
-------------- ---------------------- ------------
| id | title | | id_news | id_photo | | id | url |
-------------- ---------------------- ------------
| | | |
|----------------------| |--------------|
Run Code Online (Sandbox Code Playgroud)
这是我的班级News
@Entity
@Table(name = "news")
public class News extends ElementoPersistente implements Serializable{
...
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
@JoinTable(name = "news_photo",
joinColumns = { @JoinColumn(name = "id_news")},
inverseJoinColumns = { @JoinColumn(name = "id_photo") })
private List<photo> photos;
...
} …
Run Code Online (Sandbox Code Playgroud)