如何使用Spring JPA为连接表添加主ID列?

mzsu5hc0  于 2023-11-19  发布在  Spring
关注(0)|答案(1)|浏览(117)

我已经用Spring JPA和PostgreSQL在两个对象之间创建了一个多对多的关系。为了简单起见,让我们称它们为Student和Classes,其中Student可以有许多Classes,反之亦然。
我为Student和Class都创建了一个Entity,并将它们设置为多对多关系。它使用@JoinTable创建了一个“student_classes”连接表,其中包含列“student_id”和“class_id”。但是,没有主键列,例如递增整数。
我想记住查询时建立关系的顺序。我想有一个主键ID列(递增)来跟踪它。
如何使用@JoinTable注解实现这一点?
因此,除了“student_id”和“class_id”列之外,还会有一个“id”列,每次自动递增1。

3b6akqbq

3b6akqbq1#

正如@Nathan所指出的,您可以创建一个名为Enrollment的单独类。

@Entity
@Getter
@Setter
public class Enrollment {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id;

    @ManyToOne
    @JoinColumn(name = "student_id")
    Student student;

    @ManyToOne
    @JoinColumn(name = "class_id")
    Class aClass;

}

字符串
然后将它们引用到Student

@Entity
@Getter
@Setter
public class Student {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;

    @OneToMany(mappedBy = "student")
    Set<Enrollment> registrations;
}


Class

@Entity
@Getter
@Setter
public class Class {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;

    @OneToMany(mappedBy = "aClass")
    Set<Enrollment> registrations;
}

相关问题