生成 ConstraintViolationException 的 @Transient 属性
@Transient attribute that generate a ConstraintViolationException
这是我的Class
@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 是临时的,不会存在于等效的 table。
我有一个 UserRepository,用于从数据库中保存和检索用户。
public interface UserRepository extends JpaRepository<MyUser, Long> {}
当我保存用户时
User user1 = new User("zak@gmail.com", "pass", "pass");
userRepository.save(user1);
一切正常,但是当我检索用户进行某些处理时,我得到了 javax.validation.ConstraintViolationException: Validation failed for classes
User user1 = userRepository.findByUsername("zak@gmail.com");
//some procesing
userRepository.save(user1);
当我检索用户时,passwordConfirmation 得到一个空值,因此我得到了这个异常。
对于我的情况,什么是好的解决方案。
我应该重置 passwordConfirmation 值吗?
passwordConfirmation
被标记为 @NotEmpty
,所以你正在做一个获取,但没有从数据库中检索任何值,然后保存未通过 @NotEmpty
约束的记录你'已经成立。删除约束或将其设置为一个值。
这是我的Class
@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 是临时的,不会存在于等效的 table。
我有一个 UserRepository,用于从数据库中保存和检索用户。
public interface UserRepository extends JpaRepository<MyUser, Long> {}
当我保存用户时
User user1 = new User("zak@gmail.com", "pass", "pass");
userRepository.save(user1);
一切正常,但是当我检索用户进行某些处理时,我得到了 javax.validation.ConstraintViolationException: Validation failed for classes
User user1 = userRepository.findByUsername("zak@gmail.com");
//some procesing
userRepository.save(user1);
当我检索用户时,passwordConfirmation 得到一个空值,因此我得到了这个异常。
对于我的情况,什么是好的解决方案。 我应该重置 passwordConfirmation 值吗?
passwordConfirmation
被标记为 @NotEmpty
,所以你正在做一个获取,但没有从数据库中检索任何值,然后保存未通过 @NotEmpty
约束的记录你'已经成立。删除约束或将其设置为一个值。