首页 > 解决方案 > 是否可以仅使用注释约束来过滤数据但不能应用于表的列?

问题描述

我有一个实体用户模型,我在其中使用@NotNull、@Pattern 等注释约束来过滤用户 JSON 发布请求。用户实体有一个用户名、一个密码和一个电子邮件。

@Entity
@Table(name = "users")
public class User {
    @Column(name = "password", nullable = false, unique = false)
    @NotNull
    @Pattern(regexp = "[^\s]*", message = "Password should not contain whitespaces.")
    @Size(min = 8, max = 16, message = "Password should be between 8 and 16 characters.")
    private String userPassword;
    ...

我对使用注释约束的结果很满意,因为 spring 可以以某种方式一次将所有约束异常抛出到一个错误响应中。

但是,现在我意识到我需要在加密后保存用户的密码。但不幸的是,如果我理解正确,这些约束注释将应用于数据库表的列,因此如果 enc_password 违反约束但初始密码没有,则无法执行 setPassword(enc_password) 。

那么有没有办法让用户的密码来满足这些注释约束(如果没有像以前那样抛出异常),然后加密密码并能够使用违反这些约束的密码将用户保存在桌面上?

标签: springserviceannotationsentity

解决方案


推荐阅读