Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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
Java Spring复选框持续失败_Java_Spring_Hibernate_Spring Mvc - Fatal编程技术网

Java Spring复选框持续失败

Java Spring复选框持续失败,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我有一个Spring复选框: <spring:url value="/car/save" var="formUrl"/> <form:form action="${formUrl}" method="POST" modelAttribute="car"> <div class="form-group"> <label for="equipment">Equipment</label>

我有一个Spring复选框:

<spring:url value="/car/save" var="formUrl"/>

  <form:form action="${formUrl}" method="POST" modelAttribute="car">

      <div class="form-group">
                <label for="equipment">Equipment</label>
                <form:checkboxes path="equipment" id="equipment" items="${equipmentList}"/>
      </div>

   <button type="submit" class="btn btn-default">Submit</button>

</form:form>
当我第一次尝试持久化Car实体时,我得到了一个异常,因为值对于db表来说太长了。我将其更改为200个字符,但现在我得到了:
如何存储Spring复选框中的值?

在JPA中存储属性集合有不同的方法。您可以告诉JPA使用分隔符(例如“|”)在VARCHAR单元格中存储字符串属性。或者,可以在汽车实体和属性(设备)实体(连接)之间创建更复杂的关联。我更喜欢后者,因为我喜欢E-R约束和向这些属性添加字段(例如描述)的灵活性。 你的“设备”应该是一组东西,或者是一个列表,如果你允许多个相同值的条目。当您从POST表单返回字符串[]时,您将遍历数组并相应地更改/填充集合(JPA字段)。您现在可能存储的是引用而不是值,这就是为什么您会返回这种胡言乱语的原因

类似问题

@RequestMapping(value="/add",method=RequestMethod.GET)
public String addCar(Model model){

    List<String> equipment = new LinkedList<>(Arrays.asList(new String[]{"AC","ABS","ESP","GPS","Cabrio"}));

    model.addAttribute("car",new Car());
    model.addAttribute("equipmentList",equipment);
    return "addCar";
}
@Entity
@Table(name="CAR")
public class Car {

@Id
@Column(name="CAR_ID")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long carId;

@Column(name="EQUIPMENT")
private String[] equipment;
}