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 <emman...@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@lists.jboss.org > https://lists.jboss.org/mailman/listinfo/hibernate-dev _______________________________________________ hibernate-dev mailing list hibernate-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/hibernate-dev