2017-06-18 38 views
0

我想保存一个窗体,在选择标记中有一个外键,但它总是为空。 !我不能保存外键在春天mvc窗体选择标记

类用户:

@Entity 
public class User implements Serializable{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Long UserCode; 
    private String Lastname; 
    private String Firstname; 
    private String Adress; 
    @ManyToOne 
    @JoinColumn(name="CityCode") 
    private City CityCode; 
    private String phone; 
    private String mail; 
    private int newsletter; 

控制器:

@RequestMapping(value = "/add", method = RequestMethod.POST) 
     public String add(@ModelAttribute("userModel") User user,BindingResult bindingResult, Model model) {  
      user.setCreator("admin"); 
      user.setDateCreation(new Date()); 
      user.setDateChange(new Date()); 

      model.addAttribute("user", new User()); 
      metier.AddUser(user); 

      return "redirect:/user"; 
     } 

代码的html:

<div class="form-group"> 
<label for="city" class="control-label col-lg-2">Ville</label> 
    <div class="col-lg-4"> 
    <f:select path="CityCode" class="control-label col-lg-12"> 
     <c:forEach items="${states}" var="state"> 
      <option value="${state.cityCode }">${state.name }</option>             
     </c:forEach> 
    </f:select> 
</div> 

我不能救市代码表用户

回答

0

我想你错过的CascadeType :

@ManyToOne(cascade = CascadeType.ALL)

详情这里:https://dzone.com/tutorials/java/hibernate/hibernate-example/hibernate-mapping-many-to-one-using-annotations-1.html

+0

我有此错误:在对象的usermodel'上字段 'CityCode' 字段错误:拒绝值[1];我不能保存类型城市citycode中的值1! –

+0

您确定value =“$ {state.cityCode}”是一个City对象吗? – Padi

+0

value =“$ {state}”是一个City对象吗?如果是,请尝试更改value =“$ {state}”在保存用户之前,您应该在CityCode字段中拥有一个有效的&持久对象City。我认为你对你的注解感到困惑......所以一个City对象应该有一个cityCode(以及一个cityName,county等等),并且在你的c:forEach选项值中你传递了cityCode(这只是一个字段物体) – Padi