Sql Hibernate正在表中插入数据,它只应从中读取数据

Sql Hibernate正在表中插入数据,它只应从中读取数据,sql,spring,hibernate,checkbox,thymeleaf,Sql,Spring,Hibernate,Checkbox,Thymeleaf,我有一个只有两列的表(id,Specializations)。我正在尝试创建一个新请求的表单。请求包含: 角色列表(枚举中的组合框) 评论 日期 专门化(专门化列表中的复选框) 若我选择了角色,那个么输入注释和日期——一切都正常(新的请求被添加到表中) 但当我尝试检查或很少检查专门化时,会添加新请求,但检查的专门化会被复制并再次添加到表中 以下是我的一些代码片段: request.html <ul> <li th:each="s : ${specializations}"

我有一个只有两列的表(
id
Specializations
)。我正在尝试创建一个新请求的表单。请求包含:

  • 角色列表(枚举中的组合框)
  • 评论
  • 日期
  • 专门化(专门化列表中的复选框)
若我选择了角色,那个么输入注释和日期——一切都正常(新的请求被添加到表中)

但当我尝试检查或很少检查专门化时,会添加新请求,但检查的专门化会被复制并再次添加到表中

以下是我的一些代码片段:

request.html

<ul>
 <li th:each="s : ${specializations}">
   <input type="checkbox" th:field="*{request.specializations}" th:value="${s.toString()}"/>
        <label th:text="${s}"></label>
 </li>
</ul>

我已经尝试了我所知道的一切,我可以找到,我不知道是什么问题。

请添加添加专门化之前和添加专门化之后的表的外观,以便我们清楚您面临的问题。对于初学者,您应该使用
@modeldattribute
,然后您应该从数据库中检索专门化而不是创造新的。为此编写一个
PropertyEditor
Converter
。@Chaitanya例如,我的表Specializations(id,Specializations)包含行:(1,java)(2,php)(3,hibernate)(3,hibernate),在我选中html中的复选框后,我有:(1,java)(2,php)(3,hibernate)(4,java)
@ElementCollection(targetClass = Specializations.class)
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@CollectionTable(name = "request_specializations", joinColumns = @JoinColumn(name = "request_id")/*, 
        uniqueConstraints = @UniqueConstraint(columnNames = {"request_id", "specializations" })*/)
@Getter @Setter
private List<Specializations> specializations;
@RequestMapping(value = { "/employee", "/employee/" }, method = RequestMethod.GET)
public String employeeRequest(Model model, RequestForm requestForm) {
    model.addAttribute("specializations", requestService.getSpecializationsList());
    return "/employee";
}