I was also thinking about a generic class level @CrossValidation
constraint. I think Emmanuel and I
are thinking about the same thing here:
@CrossValidations({
@CrossValidation(forGroup=BankAccount.class),
@CrossValidation(forGroup=ContactDetails.class)
})
public class BankAccountNumber {
@ExactlyOneNull(groups=BankAccount.class)
public String getIBAN() {
return IBAN;
}
@ExactlyOneNull(groups=BankAccount.class)
public String getAccount() {
return account;
}
@ExactlyOneNull(groups=ContactDetails.class)
public String getHomeNumber() {
return homeNumber;
}
@ExactlyOneNull(groups=ContactDetails.class)
public String getWorkNumber() {
return workNumber;
}
}
Using groups (or maybe payloads!?) you can have multiple cross validations
of the same type within one entity.
--Hardy
On Mon, 18 Oct 2010 09:48:16 +0200, Emmanuel Bernard
<emmanuel(a)hibernate.org> wrote:
On 16 oct. 2010, at 10:56, Dag Hovland wrote:
> On 15/10/10 13:33, Emmanuel Bernard wrote:
> (...)
>> That being said, I wonder whether you can write your approach atop a
>> generic class-level constraint @CrossValidation that would look for
>> the properties annotations and behave as expected. That would be a
>> nice way to offer both world to the users. You will need to "group"
>> cross field constraints though: as I see it on the paper, you can only
>> have one group of cross level constraint for a given constraint type
>> per class.
>
> I do not really understand this. Can you give an example?
class BrokenModel {
@AtLeastOneNotNullAmongst(Group1.class)
A getA() { ... };
@AtLeastOneNotNullAmongst(Group1.class)
@AtLeastOneNotNullAmongst(Group2.class)
B getB() { ... };
@AtLeastOneNotNullAmongst(Group2.class)
C getC() { ... };
}
A or B must be not null and B or C must be not null.
_______________________________________________
hibernate-dev mailing list
hibernate-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev