私はSpring MVCとHibernate(そして一般的なデータベース)を使い慣れていますので、いくつかの助けが必要です。Spring/Hibernateとリレーショナルマッピング
現在、私のデータベースには2つのテーブルがあります - 予約とレストラン。予約には、Restaurantの主キーを指す外部キーR_id
があります。今はデータベースのすべてのレストランを表示するドロップダウンメニューを実装しようとしています。ユーザーがレストランを選択すると、値はその予約データベースに設定されます。私が何を意味しているかを理解していただければ幸いです
マイブッキングクラス:
@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;
}
}
関連するメソッド:
@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.
は私が予約とレストランの間のマッピングに問題があるからだと思いますが、私はしないでくださいそれが何であるかを知る。長いポストに申し訳ありません、どんな助けもありがとうございます。ありがとう!
代わりrestaurentName' 'で、それは' id'可能性があり、私は少し困惑している...両方 –
はそんなにありがとうしてみてください! – charliekelly