Validation spring roo模型绑定(未经验证)

Validation spring roo模型绑定(未经验证),validation,spring-roo,Validation,Spring Roo,这是我的型号Admin: @RooJavaBean @RooToString @RooJpaActiveRecord public class Admin { @NotNull @Column(unique = true) private String name; @NotNull private String password; @NotNull @DateTimeFormat(style = "M-") private T

这是我的型号
Admin

@RooJavaBean
@RooToString
@RooJpaActiveRecord
public class Admin {

    @NotNull
    @Column(unique = true)
    private String name;

    @NotNull
    private String password;

    @NotNull
    @DateTimeFormat(style = "M-")
    private Timestamp createTime;

    @Transactional
    public void persist(){
        if (this.entityManager == null) this.entityManager = entityManager();
        this.password = DigestUtils.sha256Hex(this.password);
        this.createTime = new Timestamp(new java.util.Date().getTime());
        this.entityManager.persist(this);
    }

}
createTime
字段与DB的视图稍有不同,该字段不能为空,因为未来的业务逻辑可能会引用它,但从用户的视图来看,它永远不会出现在
create admin form
中,因为它将在以后由
persist
代码填充。问题是
AdminController.create
验证新创建的
Admin
对象失败,因为此时
createTime
仍然为
null


那么,如何才能成功创建
管理员?

您可以避免实体(Admin)中的@NotNull


它只用于创建对象。如果每个对象都是从数据库中获取的,除了要创建的对象(在web表单中或通过DataOnDemand在测试中),那么应用程序不会有问题。

您可以避免实体(Admin)中的@NotNull


它只用于创建对象。如果每个对象都是从数据库中获取的,除了要创建的对象(在web表单中或通过DataOnDemand在测试中),那么对应用程序来说不会是问题。

这不仅仅是创建对象的问题。它将影响生成的db模式。删除此批注允许创建对象,但这是不安全的,因为将记录插入表中的唯一方法可能不是
persist
。例如,DBA可以直接插入行,这不仅仅是为了创建对象。它将影响生成的db模式。删除此批注允许创建对象,但这是不安全的,因为将记录插入表中的唯一方法可能不是
persist
。例如,DBA可以直接插入行。