JPA中的多表连接 一.User类 @ManyToMany @JoinTable(name=“user_permission”, //用来指定中间表的名称 //用于指定本表在中间表的字段名称,以及中间表依赖的是本表的哪个字段 joinColumns= {@JoinColumn(name=“uid”,referencedColumnName=“id”)}, //用于指定对方表在中间表的字段名称,以及中间表依赖的是它的哪个字段 inverseJoinColumns= {@JoinColumn(name=“pid”,referencedColumnName=“id”)} ) private Set permissions = new HashSet(0);
二.Permission类 @ManyToMany(mappedBy=“permissions”) //就配置一个mappedBy,其余的交给对方配置。 private Set users = new HashSet(0); 1 2 关系维护端删除时,如果中间表存在些纪录的关联信息,则会删除该关联信息;
关系被维护端删除时,如果中间表存在些纪录的关联信息,则会删除失败 .
三.注解说明 @ManyToMany 作用:用于映射多对多关系 属性: cascade:配置级联操作。 fetch:配置是否采用延迟加载。 targetEntity:配置目标的实体类。映射多对多的时候不用写。
@JoinTable 作用:针对中间表的配置 属性: nam:配置中间表的名称 joinColumns:中间表的外键字段关联当前实体类所对应表的主键字段 inverseJoinColumn:中间表的外键字段关联对方表的主键字段
@JoinColumn 作用:用于定义主键字段和外键字段的对应关系。 属性: name:指定外键字段的名称 referencedColumnName:指定引用主表的主键字段名称 unique:是否唯一。默认值不唯一 nullable:是否允许为空。默认值允许。 insertable:是否允许插入。默认值允许。 updatable:是否允许更新。默认值允许。 columnDefinition:列的定义信息。 ———————————————— 版权声明:本文为博主「arkitocy」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/arkitocy/article/details/100179810
