这是我的班级
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Email
@NotEmpty
private String email;
@NotEmpty
private String password;
@Transient
@NotEmpty
private String passwordConfirmation;
//constructors, getters, setters omitted....
}
如您所见, passwordConfirmation 是 Transient 并且不会存在于等效表中。
我有一个 UserRepository 可以从数据库中保存和检索用户。
public interface UserRepository extends JpaRepository<MyUser, Long> {}
当我保存用户时
User user1 = new User("[email protected]", "pass", "pass");
userRepository.save(user1);
一切正常,但是当我检索用户进行某些处理时,我得到了一个 javax.validation.ConstraintViolationException: Validation failed for classes
User user1 = userRepository.findByUsername("[email protected]");
//some procesing
userRepository.save(user1);
当我检索用户时,passwordConfirmation 获得一个空值,因此我收到此异常。
对于我的场景,什么可能是一个很好的解决方案。我应该重置 passwordConfirmation 值吗?
passwordConfirmation
被标记为@NotEmpty
,因此您正在执行获取,但未从数据库中检索任何值,然后保存未通过@NotEmpty
您设置的约束的记录。删除约束或将其设置为一个值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句