Ich habe ein paar geschachtelte Klassen, für die ich eine benutzerdefinierte Einschränkung validieren möchte. Der Validierer für meine benutzerdefinierte Einschränkung erfordert jedoch, dass ein Feld in der Child-Klasse nicht null ist oder andernfalls eine NPE auslöst.Überprüfen verschachtelter Beans mithilfe einer GroupSequence und Anwenden jeder Gruppe auf einmal
Wenn meine benutzerdefinierten Constraint- und Standardeinschränkungen alle in derselben Klasse sind, weiß ich, dass ich eine GroupSequence verwenden kann, um einen Satz Constraints anzuwenden, bevor der andere angewendet wird.
Das Setup Ich habe etwas Ähnliches mit verschachtelten Klassen versuchen, sieht etwa so aus:
@MyConstraint(groups = SecondPass)
@GroupSequence([Parent, SecondPass])
class Parent {
@Valid
Child child
}
class Child {
@NotNull
String cannotBeNull
}
Beachten Sie, dass mein Beispiel-Code in Groovy ist.
Mit geschachtelten Klassen scheint der ValidatorImpl von Hibernate zu versuchen, zuerst alle angegebenen Gruppen auf Parent und dann auf Child anzuwenden. Daher versucht es, MyConstraint zu validieren, bevor überprüft wird, ob cannotBeNull null ist oder nicht, und eine NPE zu werfen, wenn dies der Fall ist.
Gibt es eine Möglichkeit, den Validator (in einem einzelnen Validierungsaufruf) zuerst den gesamten Objektgraphen gegen eine Gruppe validieren zu lassen, bevor eventuelle Einschränkungen in späteren Gruppen in der Gruppensequenz überprüft werden?