Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
Hibernate Spring表单验证验证数据库插入?_Hibernate_Spring Mvc_Bean Validation_Hibernate Validator - Fatal编程技术网

Hibernate 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。我只

我想使用带有注释的Spring验证来验证表单数据。 例如,我有以下对象:

@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;