Hibernate 在同一控制器方法中使用多部分时如何处理外键?
我有一个下拉列表,其中包含表单中的Hibernate 在同一控制器方法中使用多部分时如何处理外键?,hibernate,spring-mvc,Hibernate,Spring Mvc,我有一个下拉列表,其中包含表单中的目的地名称。在Place表中,我有一个外键:destination\u id,它对应一个destination\u名称。在我的控制器中,当我试图设置目的地id的值时,我得到错误400,它说:客户端发送的请求在语法上不正确。 This is entity class: Place.java package com.tawesomeness.edikshedik.model; import javax.persistence.Entity; import jav
目的地名称。在Place表中,我有一个外键:destination\u id
,它对应一个destination\u名称。在我的控制器中,当我试图设置目的地id的值时,我得到错误400,它说:客户端发送的请求在语法上不正确。
This is entity class: Place.java
package com.tawesomeness.edikshedik.model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Transient;
@Entity
public class Place {
@Id
@GeneratedValue
private int place_id;
private String place_name;
private String place_tagline;
private String the_place_itself;
private String googlemap_code;
private String things_to_do;
private String accomodation;
private String food_and_drink;
private String how_to_reach;
private String getting_around;
private String what_to_buy;
private String banking_facilities;
private String internet_facilities;
private String medical_facilities;
private String police_station;
@Transient
private String encodedImage;
private int destination_destination_id;
}
这是我的控制器方法:
@Transactional
@RequestMapping(value = "/newPlaceAdded", method = RequestMethod.POST)
public ModelAndView newPlaceAdded(
@RequestParam("place_name") String place_name,
@RequestParam("destination_destination_id")int destination_destination_id,
@RequestParam("place_tagline") String place_tagline,
@RequestParam("googlemap_code") String googlemap_code,
@RequestParam("things_to_do") String things_to_do,
@RequestParam("accomodation") String accomodation,
@RequestParam("food_and_drink") String food_and_drink,
@RequestParam("how_to_reach") String how_to_reach,
@RequestParam("getting_around") String getting_around,
@RequestParam("what_to_buy") String what_to_buy,
@RequestParam("banking_facilities") String banking_facilities,
@RequestParam("internet_facilities") String internet_facilities,
@RequestParam("medical_facilities") String medical_facilities,
@RequestParam("police_station") String police_station,
@RequestParam("head_image") MultipartFile head_image,
@ModelAttribute("placeAdded")Place p,
ModelAndView model)
{
Place place = new Place();
try
{
place.setPlace_name(place_name);
place.setDestination_destination_id(destination_destination_id);
place.setPlace_tagline(place_tagline);
place.setGooglemap_code(googlemap_code);
place.setThings_to_do(things_to_do);
place.setAccomodation(accomodation);
place.setFood_and_drink(food_and_drink);
place.setHow_to_reach(how_to_reach);
place.setGetting_around(getting_around);
place.setWhat_to_buy(what_to_buy);
place.setBanking_facilities(banking_facilities);
place.setInternet_facilities(internet_facilities);
place.setMedical_facilities(medical_facilities);
place.setPolice_station(police_station);
place.setHead_image(head_image.getBytes());
System.out.println(place.getHead_image());
model.setViewName("hello");
}catch (Exception e)
{
model.addObject("message", "Place not added.");
}
System.out.println(place.getDestination_destination_id());
em.persist(place);
model.addObject("message", "PlaceAdded");
return model;
}
这是我添加下拉列表的视图部分:
<div class="form-group">
<label class="col-sm-2 control-label col-lg-3" for="destination_destination_id">Select the destination of the place: </label>
<div class="col-lg-6">
<select class="form-control" id="destination_destination_id" name="destination_destination_id" required>
<c:forEach var="destinationList" items="${destinationList}">
<option value="${destinationList.destination_id}">${destinationList.destination_name}
</option>
</c:forEach>
</select>
</div>
</div>
选择地点的目的地:
${destinationList.destination\u name}
问题可能不在代码中,而是在数据库模式中
在应用程序使用之前,您应该考虑一下了解数据库。祝您好运。可能您的问题不在代码中,而是在数据库模式中
在应用程序使用之前,您应该考虑一下了解数据库。祝您好运。好的,一旦我将视图中的名称、id和for字段从destination_destination_id更改为destination_name,我会得到以下错误400:HTTP状态400-必需的int参数'destination_destination_id'不存在。您应该保留整数id,而不是字符串。即使更改for、name和id字段,也必须在模型类和数据库中进行更改。因为他们正在寻找和int。但是在模型类中不是也是int吗?好的,一旦我将视图中的名称、id和for字段从destination\u destination\u id更改为destination\u name,我得到以下错误400:HTTP状态400-必需的int参数'destination\u destination\u id'不存在。您应该保留一个整数id,而不是字符串。即使更改for、name和id字段,也必须在模型类和数据库中进行更改。因为他们在寻找和int,但是在模型类中它不是也是int吗?