hibernate ManyToMany

问题描述

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 ?
本人新人一个(拿不出悬赏),请各位大神指教

时间: 2024-11-29 21:00:55

hibernate ManyToMany的相关文章

hibernate ManyToMany ??

问题描述 hibernate JPA 注解方式配置manytomany 的那个中间表数据 我要两边的对象 把list清空 并保存持久化对象时 自动清除中间表关联的数据 现在只能@JoinTable 放在哪个对象里面 哪个对象就可以 而另一个不行要怎样配置另一个对象也可以这样本人实在没分了希望各位大侠关注下! 解决方案 @JoinTable 可以二个都放啊.

Hibernate many-to-many list index??

问题描述 我最近在做项目的时候需要多对多映射,并且有一端还要维护集合顺序但是在save的时候<setname="busRouteSet"table="route_and_stop"><keycolumn="bus_stop_id"not-null="true"/><many-to-manyclass="BusRoute"column="bus_route_id&quo

Spring 4 MVC+Apache Tiles 3 Example

In this post we will integrate Apache Tiles 3 with Spring MVC 4, using annotation-based configuration. Apache Tiles is a template based, composite view framework: it allows to reuse page pieces across the application, keeping consistent look and feel

Hibernate(JPA)多对多(ManyToMany)关联映射不完美之处

近来,在做的一个NewsMS项目中,需要用到多对多关联映射,以下是项目中用到的两个实体类:用户类User和角色类Role,它们之间是多对多的关系. //用户表 @Entity @Table(name="rong_user") public class User{ //省略其它内容 private Set<Role> roles = new LinkedHashSet<Role>(); //角色集合 @ManyToMany(cascade = {CascadeTy

请教各位大神关于hibernate中many-to-many的问题

问题描述 在many-to-many的双向关联中,两端<set>里的cascade和inverse改如何配置呢,是否两边的cascade都能设置为all?看到有个帖子说只能一端的inverse设置为false,另一端一定要为true,可设置为true的一端怎么去维护中间表呢? 解决方案 解决方案二:该回复于2011-01-24 09:09:05被版主删除解决方案三:如果是两个表共同维护,就用两个inverse=false解决方案四:只设置一个就行了,只用一方维护解决方案五:引用2楼hf2905

关于hibernate annotation 的manyToMany的映射的疑问

问题描述 我现在用hibernateannotation写个manyToMany的映射,然后我连接表有自己的属性怎么弄?不能用joinTable了吧.请大家帮忙解答!谢谢! 解决方案 解决方案二:<?xmlversion="1.0"encoding="utf-8"?><!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN""htt

hibernate中many-to-many基本操作

创建数据库 create database student; use student; create table studentInfo(        stuNo integer auto_increment not null primary key,        stuName varchar(50) not null ); create table courseInfo(        courseNo integer auto_increment not null primary ke

利用开源项目Hibernate开发Blog系统

项目 开发工具采用MYECLIPS3.6,首先是建立项目,导入STRUTS+HIBERNATE包,然后配置SRC跟目录下的hibernate.cfg.xml.我采用的是MYSQL数据库,所以配置如下: <hibernate-configuration>     <session-factory>        <!-- properties -->        <property name="connection.username">r

Hibernate 3.0 的规则应用分

一.前言 Hibernate和Spring是两个著名的开源框架,越来越广泛地应用于J2EE应用程序的开发中.虽然它们各自所针对的目标不同,但是它们都有一个共同的特点:依赖性映射.Spring注重于在把对象返回到客户之前,帮助挑选出对象间的依赖性,这样以来大大减少了客户端的编码工作.Hibernate则专注于在把完整的对象模型返回到客户之前,挑选出对象模型描述的依赖性.当直接使用JDBC来把一个数据模型映射成一个对象模型时,我们通常需要编写大量的代码来建造一个对象模型.Hibernate可以帮助消