lhn_mouse 2015-06-10 01:20 采纳率: 0%
浏览 640

hibernate ManyToMany

做了两个实体类,任务和成员,一个任务有多个成员,一个成员属于多个任务,多对多关系,结构如下:
任务类:
@Entity
@Table(name = "pms_schedule")
public class Schedule implements Serializable{
@Id
@GeneratedValue
private int seqId;//主键

@ManyToMany(cascade = { CascadeType.PERSIST, javax.persistence.CascadeType.MERGE },fetch = FetchType.LAZY,mappedBy = "schedules")
private Set<Person> attendPersons;//参与人

public int getSeqId() {
    return seqId;
}

public void setSeqId(int seqId) {
    this.seqId = seqId;

@JsonIgnore
public Set<Person> getAttendPersons() {
    return attendPersons;
}

public void setAttendPersons(Set<Person> attendPersons) {
    this.attendPersons = attendPersons;
}

}
成员类:
@Entity
@Table(name = "person")
public class Person implements Serializable{
@Id
private int seqId;//主键

    @ManyToMany(cascade = { CascadeType.PERSIST, javax.persistence.CascadeType.MERGE },fetch = FetchType.LAZY)
@JoinTable(name = "person_schedule",joinColumns = {@JoinColumn(name = "person_id")},inverseJoinColumns = {@JoinColumn(name = "schedule_id")})
private Set<Schedule> schedules;

public int getSeqId() {
  return seqId;
}
public void setSeqId(int seqId) {
  this.seqId = seqId;
}

    @JsonIgnore
public Set<Schedule> getSchedules() {
    return schedules;
}
public void setSchedules(Set<Schedule> schedules) {
    this.schedules = schedules;
}

}
成员表是关系维护者,在任务控制层用session.delete()方法删除任务和成员-任务关系时会报错(受外键制约不能删除)。
如果在数据库中把成员-任务表中的外键属性ON DELETE 改成 CASCADE,再使用session.delete()方法删除任务,就可以级联把任务和成员-任务表对应的数据都删除

那么在hibernate里又没办法在创建表时就把ON DELETE 属性设成 CASCADE ?
本人新人一个(拿不出悬赏),请各位大神指教

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥50 永磁型步进电机PID算法
    • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
    • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
    • ¥15 如何处理复杂数据表格的除法运算
    • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
    • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
    • ¥200 uniapp长期运行卡死问题解决
    • ¥15 latex怎么处理论文引理引用参考文献
    • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
    • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?