@Entity
@Table(uniqueConstraints = @UniqueConstraint(columnNames = { "field1", "field2"}))
public class A extends Model{
public String field1;
public String field2;
}
Я хотел бы определить свое собственное ограничение проверки, расширив play.data.validation.Check , чтобы я мог отобразить пользовательское сообщение проверки.
Однако кажется, что Checkотносится только к одному полю.Есть ли другой способ выполнить эту проверку для нескольких полей?
ОБНОВЛЕНИЕ - Решение
@Entity
@Table(uniqueConstraints = @UniqueConstraint(columnNames = { "field1", "field2"}))
public class A extends Model{
@CheckWith(UniqueFieldsCheck.class)
public String field1;
public String field2;
static class UniqueFieldsCheck extends Check {
public boolean isSatisfied(Object obj, Object o) {
boolean satisfied = true;
A a = (A)obj;
A aA = A.find("byField1AndField2", a.field1, a.field2).first();
if (aA != null) {
setMessage("This fields should be unique.");
satisfied = false;
}
return satisfied;
}
}
}