tôi có xe hơi và mô hình cho thuê conntected quan OneToMany:Spring MVC với Hibernate - lập bản đồ OneToMany ở dạng
@Entity
public class Rental {
private Long id;
private Car car;
private User user;
@Id
@GeneratedValue
@Column(name = "RENTAL_ID")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "CAR_ID")
public Car getCar() {
return car;
}
public void setCar(Car car) {
this.car = car;
}
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "USER_ID")
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
@Entity
public class Car {
private Long id;
private String name;
private String description;
@Id
@GeneratedValue
@Column(name = "CAR_ID")
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
...
}
Và tôi muốn thiết lập xe trong Thuê tạo:
<form:form method="POST" commandName="rental">
<form:errors path="*" cssClass="errorblock" element="div" />
<table cellspacing="10">
<tr>
<td>Car</td>
<td>
<form:select path="car" multiple="false" items="${cars}" itemLabel="name" itemValue="id"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Create"></td>
</tr>
</table>
Biểu mẫu: thẻ chọn hiển thị các xe ô tô có sẵn chính xác, nhưng sau khi gửi biến mẫu Xe hơi cho thuê là không có giá trị.
@Controller
@RequestMapping("/make-rental.htm")
public class MakeRentalController {
private CarDAO carDAO;
private UserDAO userDAO;
private RentalDAO rentalDAO;
@Autowired
public void setCarDAO(CarDAO carDAO) {
this.carDAO = carDAO;
}
@Autowired
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
@Autowired
public void setRentalDAO(RentalDAO rentalDAO) {
this.rentalDAO = rentalDAO;
}
@RequestMapping(method = RequestMethod.GET)
public String initForm(ModelMap mapModel) {
Rental rental = new Rental();
// command object
mapModel.addAttribute("cars", carDAO.getAll());
mapModel.addAttribute("rental", rental);
// return form view
return "makeRentalFormView";
}
@RequestMapping(method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("rental") Rental rental,
BindingResult result, SessionStatus status, HttpSession session) {
Object userId = session.getAttribute("userId");
if (userId != null) {
rental.setUser(userDAO.getById((Long) userId));
rentalDAO.save(rental);
// clear the command object from the session
status.setComplete();
}
// form success
return "redirect:/index.htm";
}
}
Có vấn đề gì?
tôi nghĩ rằng nó có thể được phục vụ bởi xem lớp với JSTL. Đó là loại workaround, nhưng nó hoạt động – bontade