一次搞定Jpa的@OneToMany和@ManyToMany注解

精选30+云产品,助力企业轻松上云!>>> hot3.png

1.对于@OneToMany和@ManyToOne来说是一样,两张表互相维护,加入mappedBy="",由被控方维护的表,增加外键即可。如果是没有增加上面类型,就会产生一个第三方表进行维护。

2.对于@ManyToMany注解来说,也是一样的,在这里需要注意一下,我们需要一个第三方表来维护多对多的关系,如果想要实现没有第三方表,可以采用两次多对一的关系结构。

3.实例:

男人-女人【一对多】
男人-爱好【多对多】

4.Man.java

@Entity
@Table(name = "t_man")
public class Man {
    @Id//主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增长
    private int id;

    private String name;

    //【主控方:一对多】男人有多个女人关系由 man 维护
    @OneToMany(mappedBy = "man")
    private List<Women> womens;

    //【主控方:多对多】男人可以有多重爱好,爱好同时又属于多个男人
    @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)//级联保存,懒加载
    //会创建一个man_hobby的维护表,关联man和hobby的id关系
    @JoinTable(name = "man_hobby",
            joinColumns = {@JoinColumn(name = "man_id", referencedColumnName = "id")},
            inverseJoinColumns = {@JoinColumn(name = "hobby_id", referencedColumnName ="id")})
    private List<Hobby> hobbies;
}

5.Women.java

@Entity
@Table(name = "t_women")
public class Women {
    @Id//主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增长
    private int id;

    private String name;

    //【被控方:多对一】女人对男人
    @ManyToOne
    @JoinColumn(name = "manan_id", referencedColumnName = "id")//外键名称,参考主键
    private Man man;

}

6.Hobby.java

@Entity
@Table(name = "t_hobby")
public class Hobby {
    @Id//主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)//自增长
    private int id;

    private String name;

    //【被控方:多对多】由被控方维护关系
    @ManyToMany(cascade = CascadeType.REFRESH,mappedBy = "hobbies",fetch = FetchType.LAZY)
    private List<Man> mans;
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding路人王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值