【发布时间】:2016-03-24 17:47:19
【问题描述】:
我是 Spring MVC 和 Hibernate(以及一般数据库)的新手,所以需要一些帮助。
目前我的数据库中有 2 个表 - 预订和餐厅。 Booking 有一个外键R_id 指向Restaurant 的主键。现在我正在尝试实现一个下拉菜单,它显示数据库中的所有餐厅,当用户选择餐厅时,该值在该 Booking 数据库中设置。我希望你明白我的意思。
我的预订舱位:
@Entity
@Table(name="booking")
public class Booking {
@Id
@Column(name="id")
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name="R_id")
private Restaurant restaurant;
@Column(name="date")
@Type(type="date")
private Date date;
@Column(name="start")
@Type(type="time")
private Date start;
@Column(name="duration")
private float duration;
@Column(name="amount_of_people")
private int amountOfPeople;
@Column(name="name")
private String name;
@Column(name="contact_preference")
private String contactPreference;
@Column(name="comments")
private String comments;
@Column(name="current_datetime")
@Type(type="timestamp")
private Date currentDatetime;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Restaurant getRestaurant() {
return restaurant;
}
public void setRestaurant(Restaurant restaurant) {
this.restaurant = restaurant;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Date getStart() {
return start;
}
public void setStart(Date start) {
this.start = start;
}
public float getDuration() {
return duration;
}
public void setDuration(float duration) {
this.duration = duration;
}
public int getAmountOfPeople() {
return amountOfPeople;
}
public void setAmountOfPeople(int amountOfPeople) {
this.amountOfPeople = amountOfPeople;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getContactPreference() {
return contactPreference;
}
public void setContactPreference(String contactPreference) {
this.contactPreference = contactPreference;
}
public String getComments() {
return comments;
}
public void setComments(String comments) {
this.comments = comments;
}
public Date getCurrentDatetime() {
return currentDatetime;
}
public void setCurrentDatetime(Date currentDatetime) {
this.currentDatetime = currentDatetime;
}
}
餐厅类:
@Entity
@Table(name="restaurant")
public class Restaurant {
@Id
@Column(name="id")
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
@Column(name="restaurant_name")
private String restaurantName;
@Column(name="address")
private String address;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getRestaurantName() {
return restaurantName;
}
public void setRestaurantName(String restaurantName) {
this.restaurantName = restaurantName;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String toString() {
return restaurantName;
}
}
MainController中的相关方法:
@RequestMapping(value = "booking/create", method = RequestMethod.GET)
public String createBooking(Model model) {
model.addAttribute("booking", new Booking());
initModelList(model);
return "newBooking";
}
@RequestMapping(value = "booking/create", method = RequestMethod.POST)
public String createBookingAction(Booking booking) {
bookingService.addBooking(booking);
return "redirect:/bookings";
}
.....
private void initModelList(Model model) {
List<Restaurant> restaurantList = restaurantService.getRestaurants();
model.addAttribute("restaurants", restaurantList);
}
这是我的jsp文件:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<!DOCTYPE html>
<html lang="en">
<jsp:include page="../fragments/head.jsp"/>
<body>
<jsp:include page="../fragments/menu.jsp"/>
<div id="body">
<h2>Create new booking</h2>
<form:form method="POST" commandName="booking" class="bookingForm">
<table>
<tr>
<td>Restaurant:</td>
<td><form:select path="restaurant">
<form:option value="NONE" label="--- Select ---" />
<form:options items="${restaurants}" />
</form:select>
</td>
</tr>
<tr>
<td colspan="3"><input type="submit" /></td>
</tr>
</table>
</form:form>
<div>
<a href="/bookings">Back to List</a>
</div>
</div>
<jsp:include page="../fragments/footer.jsp"/>
</body>
</html>
现在下拉菜单显示餐厅,但是当我点击提交时,它给了我这个错误:The request sent by the client was syntactically incorrect.
我认为这是因为 Booking 和 Restaurant 之间的映射有问题,但我不知道它是什么。对不起,很长的帖子,任何帮助表示赞赏。谢谢!
【问题讨论】:
标签: java database spring hibernate spring-mvc