Hibernate Spring表单验证验证数据库插入?
我想使用带有注释的Spring验证来验证表单数据。 例如,我有以下对象:Hibernate Spring表单验证验证数据库插入?,hibernate,spring-mvc,bean-validation,hibernate-validator,Hibernate,Spring Mvc,Bean Validation,Hibernate Validator,我想使用带有注释的Spring验证来验证表单数据。 例如,我有以下对象: @Entity @ComponentScan public class Category { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE) private long id; @NotEmpty private String type; ... } 如您所见,我在类型字符串上使用了@NotEmpty。我只
@Entity
@ComponentScan
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private long id;
@NotEmpty
private String type;
...
}
如您所见,我在类型
字符串上使用了@NotEmpty
。我只想用它来验证我的表单。它不应验证数据库插入
因此,当我这样做时:
@RequestMapping(value = "/myForm", method = RequestMethod.POST)
public String categoryPOST(HttpServletRequest request, Model model, @Valid Category category, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "form";
}
return "redirect:/results";
}
它按我希望的那样工作。但当我必须创建一个虚拟对象时:
Category category = new Category();
然后我对空对象执行保存:
this.category_repository.save(category);
我得到错误(唯一重要的部分):
这不是我想要的。我希望使用注释进行表单验证,但不希望对数据库操作执行验证
这有可能吗
其他信息
我使用以下方法得到了相同的结果:
javax.validation.constraints.NotNull;
注释。是的,这是可能的
第一个选项是对表单对象(DTO)和实体使用不同的类
第二个选项是在保存之前配置Hibernate并禁用验证。因为这个问题已经回答了好几次了,我将提供他们的链接:
@ComponentScan
实体上的注释看起来很奇怪。你确定你需要它吗?不,不确定。对spring完全陌生。很可能您可以删除它:好吧,但如果真的总是只想验证表单,而不是数据库操作,但我必须始终使用相同的对象,该怎么办?我现在正在做的项目非常庞大,要在代码中找到所有需要禁用验证的行需要很长时间。那么,有没有更好的方法使用spring只验证表单帖子呢?在hibernate配置中,禁用验证不是针对每个实体,而是只禁用一次。或者,您有多个hibernate配置?
javax.validation.constraints.NotNull;