AFAIK không có chú thích để thực hiện việc này. Bạn có hai tùy chọn
Một, tạo chú thích trình xác thực tùy chỉnh. Here là một ví dụ rất hay. Thực hiện cuộc gọi đến lớp DAO của bạn và kiểm tra tính sẵn sàng trong việc thực hiện validator
public boolean isValid(String object, ConstraintValidatorContext constraintContext) {
return userDAO.userNameAvailable(object); //some method to check username availability
}
HOẶC
Đặt độc đáo = true về sở hữu của bạn trong lớp thực thể của bạn.
@Column(unique = true)
private String userName;
Nhưng điều này sẽ không hoạt động với @valid, thay vào đó hãy ném ngoại lệ về sự kiên trì. Bạn phải sử dụng một logic thích hợp để xử lý điều đó.
Giải pháp đầu tiên không phải là bằng chứng đánh lừa. Kiểm tra this câu trả lời trên SO.
Điều thứ hai sẽ không bao giờ thất bại.
CẬP NHẬT
Như NimChimpsky nhận xét, sử dụng cả hai với nhau sẽ là một giải pháp cụ thể.
tôi khuyên bạn nên sử dụng cả hai phương pháp – NimChimpsky
Vâng, sau khi đào một chút tôi cảm thấy rằng điều thứ hai là tốt hơn :) Nó sẽ không bao giờ thất bại không giống như cái đầu tiên. – shazinltc
um, cũng phụ thuộc vào xử lý ngoại lệ khi người dùng nhập tên người dùng hiện có trước, tôi sẽ nhập dữ liệu người dùng trước khi cố gắng duy trì – NimChimpsky