JoinColumn 的name 和referencedColumnName

http://blog.csdn.net/z69183787/article/details/20044343

name  是默认将外实体的主键作为外键

二referencedColumnName  则不是,他可以制定

但是一般都是主键作为外键

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你只想删除中间表而不删除集合中的实体类,可以使用JPA的@ManyToMany注解中的cascade属性来实现。将cascade属性设置为CascadeType.REMOVE,表示在删除一个Role实体时,只删除Role与Permission之间的关系,而不删除Permission实体本身。 修改Role类中的@ManyToMany注解,如下所示: ``` @ManyToMany(cascade = CascadeType.REMOVE) @JoinTable(name="system_role_permission", joinColumns=@JoinColumn(name="role_id", referencedColumnName="id"), inverseJoinColumns=@JoinColumn(name="permission_id", referencedColumnName="id") ) private List<Permission> permissions; ``` 这样,在删除Role实体时,只会删除Role与Permission之间的关系,而不会删除Permission实体本身。同理,如果你想删除Permission实体时,只删除Permission与Role之间的关系而不删除Role实体本身,可以在Permission类中的@ManyToMany注解中设置cascade属性为CascadeType.REMOVE。 完整代码如下所示: Role类: ``` @Entity public class Role { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @ManyToMany(cascade = CascadeType.REMOVE) @JoinTable(name="system_role_permission", joinColumns=@JoinColumn(name="role_id", referencedColumnName="id"), inverseJoinColumns=@JoinColumn(name="permission_id", referencedColumnName="id") ) private List<Permission> permissions; // getters and setters } ``` Permission类: ``` @Entity public class Permission { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @ManyToMany(mappedBy = "permissions", cascade = CascadeType.REMOVE) @JsonIgnore private List<Role> roles; // getters and setters } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值