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
)。我正在尝试创建一个新请求的表单。请求包含:
- 角色列表(枚举中的组合框)
- 评论
- 日期
- 专门化(专门化列表中的复选框)
<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";
}