Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 在同一控制器方法中使用多部分时如何处理外键?_Hibernate_Spring Mvc - Fatal编程技术网

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吗?