В рамках учебного проекта я создаю базу данных пассажирских железнодорожных перевозок. Пользователь регистрируется, покупает билет на поезд. Поезд идет по маршруту с несколькими станциями.
Помогите, пожалуйста, разобраться с отношениями.
Существует несколько объектов: пользователь, билет, поезд, станция, маршрут.
Я создаю каждую сущность как:
@Entity
@Table(name = "...")
public class ... implements Serializable { ... }
Пользователь:
id (первичный ключ),
Эл. адрес,
пароль,
имя,
Фамилия,
Дата рождения,
роль (например, пользователь / администратор).
С этим я все понимаю. Возникают дополнительные вопросы. Билет:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column("TICKET_ID")
private int id;
// One user can have multiple tickets?
@ManyToOne
@JoinColumn(name = "USER_ID")
private User user;
@Column(name = "SALE_TIME")
private Date saleTime;
// One train can have multiple tickets?
@ManyToOne
@JoinColumn(name = "TRAIN_ID")
private Train train;
@Column(name = "CARRIAGE")
private int carriage;
@Column(name = "PLACE")
private int place;
Здесь все в порядке? Далее ...
@Entity
@Table(name = "TRAINS")
public class Train implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "TRAIN_ID")
private int id;
@Column(name = "TRAIN_NUMBER")
private int number;
@Column(name = "SEATS")
private int seats;
// on the way for example
@Column(name = "STATUS")
private String status;
Как установить на поезд фиксированное количество мест и как их уменьшить при покупке билета?
Со станцией не сложно: идентификатор, имя, статус.
И, наконец, маршрут:
@Entity
@Table(name = "ROUTE_POINT")
public class RoutePoint implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ROUTE_ID")
private int id;
// ?????????
@ManyToOne
@JoinColumn(name = "TRAIN_NUMBER")
private Train train;
// ?????????
@ManyToOne
@JoinColumn(name = "STATION_NAME")
private Station station;
@Column(name = "DATE_ARRIVAL")
private Date dateArrival;
@Column(name = "DATE_DEPARTURE")
private Date dateDeparture;
Пожалуйста, помогите мне разобраться с аннотациями и отношениями, и, самое главное, понять это. Google уже фиолетовый, лучшее понимание приходит через практику. Спасибо.