我正在使用 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 中实现这一点?
您需要在用户和航班之间添加一对多关联。
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