【发布时间】:2016-06-23 06:55:21
【问题描述】:
假设一个预订可以有多个日期!我认为我的代码有点多余,因为我必须将 booking_date 插入到 booking 和booking 到 booking_date。
采用以下结构,一个预订可以附有 1 个或多个日期(在这种情况下,对您来说可能没有多大意义。)
预订日期:
@Entity
@Table(name="booking_date")
public class BookingDate {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="booking_date_id")
private int id;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name="start_date")
private Date startDate;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name="end_date" )
private Date endDate;
@ManyToOne
@JoinColumn(name = "booking_id")
private Booking booking;
预订:
@Entity
@Table(name="booking")
public class Booking {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="booking_id")
private int bookingId;
// One booking to one booking date...
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "booking")
private BookingDate bookingDate;
我认为我在这里做错了,因为当我将预订插入数据库时,我必须将预订插入 booking_date,反之亦然。
让我们从我的代码中提取以下示例...插入具有多个日期的预订。
@RequestMapping(value="create/booking", method=RequestMethod.POST, produces = {MediaType.APPLICATION_JSON_VALUE })
Booking bookingCreate(@RequestBody BookingContext bookingcont, BindingResult bindingResult) {
Booking booking = new Booking();
我已经创建了预订实体,现在我需要在该预订中插入一堆日期。首先,我必须遍历BookingDate 的List 并将我们在上面创建的预订设置为每个人(我觉得这可以避免)?
List<BookingDate> bookingDates = <Pretend this is a list of BookingDate objects>
// Loop through bookingdates and assign the booking obj to each of them
for (BookingDate bookingDate : bookingDates) {
bookingDate.setBookingDate(bookingDate);
}
然后我会将 bookingDates 对象分配给我们的预订对象:
booking.setBookingDate(bookingDates); // Insert multiple booking dates for the booking
【问题讨论】:
标签: mysql hibernate database-design