问题
I have the following two classes, one ReqCandAssociation can have many Comments and it is mapped like so. I need to figure out a way that when I delete a ReqCandAssociation it deletes all of its associated comments. Thanks
@Entity
@Table(name = "candidate_jobReq")
public class ReqCandAssociation implements Serializable {
@Id
private Integer candidateId;
@Id
private Integer jobId;
@Column(name = "reqStatus")
private String reqStatus;
@ManyToOne
@PrimaryKeyJoinColumn(name="candidateId", referencedColumnName="id")
private Candidate candidate;
@ManyToOne
@PrimaryKeyJoinColumn(name="jobId", referencedColumnName="id")
private JobReq jobReq;
public ReqCandAssociation(){
}
Second class
@Entity
@Table(name="comment")
public class Comment {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@Column(name="commentText")
private String commentText;
@Column(name="commentDate")
private Date commentDate;
@ManyToOne
@PrimaryKeyJoinColumn(name="reqCandAssociationId", referencedColumnName="id")
private ReqCandAssociation reqCandAssociation;
@ManyToOne
@PrimaryKeyJoinColumn(name="userId", referencedColumnName="id")
private User user;
回答1:
Change this to the following, i'm making it bidirectional mapping.
@Entity
@Table(name = "candidate_jobReq")
public class ReqCandAssociation implements Serializable {
@Id
private Integer candidateId;
@Id
private Integer jobId;
@Column(name = "reqStatus")
private String reqStatus;
@OneToMany(cascade = { CascadeType.ALL }) //this is added here.
@JoinColumn(name ="reqCandAssociationId")
private Set<Comment> comments;
-----
Readup more on the cascade options. All cascade types are all|none|save-update|delete|all-delete-orphan|delete-orphan
The cascade all will delete all the comments associated to this class.
来源:https://stackoverflow.com/questions/19168209/hibernate-delete-row-and-foreign-key-row-manytoone