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

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

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;
}


目录
相关文章
|
5月前
|
Java 数据库连接
hibernate注解实体类(Dept.java)
hibernate注解实体类(Dept.java)
|
5月前
|
Java 关系型数据库 数据库连接
深入理解 @TableName 和 @TableField 注解
深入理解 @TableName 和 @TableField 注解
182 0
|
5月前
|
SQL Java 数据库连接
不标识@TableName、@TableField和@TableID注解会发生什么?
不标识@TableName、@TableField和@TableID注解会发生什么?
126 0
|
5月前
|
Java 数据库连接
Hibernate中使用Criteria查询及注解——( EmpCondition)
Hibernate中使用Criteria查询及注解——( EmpCondition)
|
数据库
MyBatisPlus - 实体类 的 常用注解
举例说明MyBatisPlus中实体类的常用注解,包括@TableName、@TableId、@TableField、@TableLogic
266 0
|
Java 数据库连接
Hibernate中使用Criteria查询及注解——(HibernateUtil)
Hibernate中使用Criteria查询及注解——(HibernateUtil)
|
SQL Java 数据库连接
hibernate 实体映射注解
hibernate 实体映射注解
118 1
|
Java 数据库连接 API
@Entity 里面的 JPA 注解
关于注解Entity的JPA实现方式
|
存储 Java 数据库
JPA 关系映射(OneToOne、OneToMany、ManyToMany)
JPA 关系映射(OneToOne、OneToMany、ManyToMany)
817 0