如何在Spring boot中连接两个表?

问题描述 投票:0回答:1

我正在使用 Spring Boot 创建一个航班预订应用程序。它有两个实体:用户和航班

用户实体:

@Entity
@Table(name = "User", uniqueConstraints = @UniqueConstraint(columnNames = "username"))
@Getter
@Setter
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column
    private String username;
    
    @Column
    private String email;
    
    @Column
    private String password;    

    public User() {
        super();
    }

    public User(Long id, String username, String email, String password) {
        super();
        this.id = id;
        this.username = username;
        this.email = email;
        this.password = password;
    }
    
}

航班实体:

@Entity
@Table(name = "Flight" , uniqueConstraints = @UniqueConstraint(columnNames = "flightNumber"))
@Getter
@Setter
public class Flight {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long flightId;
    
    @Column
    private String flightNumber;
    
    @Column
    private String airlineName;
    
    @Column
    private String flightType;
    
    @Column
    private String origin;
    
    @Column
    private String destination;
    
    @Column
    private LocalTime departure;
    
    @Column
    private LocalTime arrival;
    
    @Column
    private Date date;
    
    @Column
    private Integer AvailableSeats;
    
    @Column
    private String price;

    public Flight() {
        super();
    }


    public Flight(Long flightId, String flightNumber, String airlineName, String flightType, String origin, String destination, LocalTime departure, LocalTime arrival, Date date, Integer availableSeats, String price) {
        super();
        this.flightId = flightId;
        this.flightNumber = flightNumber;
        this.airlineName = airlineName;
        this.flightType = flightType;
        this.origin = origin;
        this.destination = destination;
        this.departure = departure;
        this.arrival = arrival;
        this.date = date;
        AvailableSeats = availableSeats;
        this.price = price;
    }

}

我想创建另一个名为“Booking”的实体来存储用户的预订记录。它将有两列:用户名(来自用户表)和航班号(来自航班表)。 据我了解,我必须对用户和航班进行多对多映射。如何在 Spring Boot 中实现这一点?

java spring-boot web-development-server
1个回答
0
投票

您需要在用户和航班之间添加一对多关联。

1- 创建一个名为 Booking 的类:


@Entity
@Table(name = "Booking")
public class Booking {

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

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User user;

    @ManyToOne
    @JoinColumn(name = "flight_id")
    private Flight flight;

    // Constructors, getters, and setters
}

2- 在用户类中添加:

    @OneToMany(mappedBy = "user")
    private Set<Booking> bookings;

    // getter and setter

3- 在飞行舱位中添加:


   @OneToMany(mappedBy = "flight")
    private Set<Booking> bookings;


   // getter and setter


© www.soinside.com 2019 - 2024. All rights reserved.