jpa实体之间的关联关系注解有哪些

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`

在JPA中,实体之间的关联关系是通过注解来定义的。以下是一些常用的关联关系注解:

@OneToOne

表示一对一的关系。当两个实体类中的每一个实例只能与另一个实体类中的一个实例相关联时使用。

示例:

@Entity
public class User {
    @Id
    @GeneratedValue
    private Long id;

    @OneToOne
    private Profile profile;
}

@Entity
public class Profile {
    @Id
    @GeneratedValue
    private Long id;

    @OneToOne(mappedBy = "profile")
    private User user;
}

@OneToMany

表示一对多的关系。当一个实体类的一个实例可以与另一个实体类的多个实例相关联时使用。

示例:

@Entity
public class User {
    @Id
    @GeneratedValue
    private Long id;

    @OneToMany(mappedBy = "user")
    private List<Post> posts;
}

@Entity
public class Post {
    @Id
    @GeneratedValue
    private Long id;

    @ManyToOne
    private User user;
}

@ManyToOne

表示多对一的关系。当多个实体类的实例可以与另一个实体类的一个实例相关联时使用。

示例:

@Entity
public class Post {
    @Id
    @GeneratedValue
    private Long id;

    @ManyToOne
    private User user;
}

@ManyToMany

表示多对多的关系。当多个实体类的实例可以与另一个实体类的多个实例相关联时使用。

示例:

@Entity
public class Student {
    @Id
    @GeneratedValue
    private Long id;

    @ManyToMany
    private List<Course> courses;
}

@Entity
public class Course {
    @Id
    @GeneratedValue
    private Long id;

    @ManyToMany(mappedBy = "courses")
    private List<Student> students;
}

@JoinColumn

用于定义外键列的名称,并且可以用于@OneToOne@OneToMany@ManyToOne注解中。

示例:

@Entity
public class User {
    @Id
    @GeneratedValue
    private Long id;

    @OneToOne
    @JoinColumn(name = "profile_id")
    private Profile profile;
}

@JoinTable

用于定义多对多关系中的连接表。

示例:

@Entity
public class Student {
    @Id
    @GeneratedValue
    private Long id;

    @ManyToMany
    @JoinTable(
        name = "student_course",
        joinColumns = @JoinColumn(name = "student_id"),
        inverseJoinColumns = @JoinColumn(name = "course_id")
    )
    private List<Course> courses;
}

这些注解允许你定义实体之间的关系,并且JPA提供器会根据这些注解来生成相应的数据库表结构和查询。

最后更新于