2017-10-13 4 views
1

this ist meine Beispielanwendung mit es ist test. Ich habe einige Einschränkungen auf repository als @NotEmpty definiert. Wenn ich möchte dieses Repository nennen ich folgende Ausgabe bekommen Hibernate Validator Fehler, wenn @NotEmpty bei Rückgabetyp verwendet

javax.validation.ConstraintDeclarationException: HV000141: The constraint org.hibernate.validator.constraints.NotEmpty used ConstraintTarget#IMPLICIT where the target cannot be inferred.

Muss ich implementieren Validator für @NotEmpty oder ist das ein Fehler in den Ruhezustand oder meine Feder-Boot-Anwendung?

Hinweis wenn ich @NotEmpty vom Rückgabetyp entfernen, funktioniert es.

+1

Können Sie den Code hier zurückbringen, macht es die Frage leichter zu lesen (für den Test und Repo). –

+1

Es scheint ein Bug in HV als 5.3 und 5.4 zu sein scheint beide NotEmpty Validator-Implementierungen zu fehlen. Wenn Sie es in Strings wie in Ihrem Beispiel verwenden möchten, sollten Sie auch '@ NotBlank' betrachten - dieses sollte gut funktionieren, wenn die Bedingung Ihren Anforderungen entspricht. Oder ich würde auch ein Upgrade auf Hibernate Validator 6.0 empfehlen. Es ist die neueste Version mit vielen Verbesserungen. (aber im Falle von 6.0 müssten Sie einige Änderungen an Ihrer Konfiguration vornehmen ...) –

+0

Wenn Sie genauer hinschauen, ist die '@ NotEmpty'-Abhängigkeit von HV eine zusammengesetzte Bedingung und es gibt keine Validator-Implementierung für sie, wie sie sein sollte Verwenden einer Zusammensetzung von Size- und NotNull-Validatoren. Und das ist, was dieses Problem verursacht (so sieht immer noch ein Bug aus, aber etwas anders als das, was ich im vorherigen Kommentar gesagt habe ...) –

Antwort

1

Sie stoßen hier auf einen interessanten Eckfall, wo für eine rein komponierte Einschränkung nicht festgestellt werden kann, ob sie auf die Parameter oder den Rückgabewert einer Methode zutrifft. Zurück in der Zeit von Bean Validation 1.1 we decided überlasse es Implementierungen diesen Fall zu behandeln, da es sehr selten ist.

Hibernate Validator ermöglicht das Auflösen dieses Falls by specifying@SupportedValidationTarget(ValidationTarget.ANNOTATED_ELEMENT) für die Constraint-Definition. Dies wurde in HV 5.2 hinzugefügt, aber dann scheint es, dass wir vergessen haben, es für @NotEmpty und möglicherweise andere rein komponierte Constraints zu verwenden, die durch HV definiert sind. Könnten Sie deshalb bitte einen Fehlerbericht in unserer JIRA instance einreichen?

Beachten Sie, dass das Problem mit der in Bean Validation 2.0 (HV 6.0) definierten @NotEmpty nicht auftreten sollte, da dies nicht als eine rein komponierte Einschränkung deklariert ist.

Update: Dieses Problem wurde in Hibernate Validator 6.0.3.Final behoben (und nach 5.3.6.Final und 5.4.2.Final zurückportiert).

+0

BTW. Als Workaround sollte es funktionieren, wenn Sie einen Dummy 'ConstraintValidator' für' @ NotEmpty' über eine XML Constraint Mapping hinzufügen. Seine Methode 'isValid()' würde immer 'true' zurückgeben, aber ihre Anwesenheit würde den Auflösungsalgorithmus veranlassen, die Abhängigkeit (und somit ihre Zusammensetzungsbedingungen) auf den Rückgabewert der Methode und nicht auf die Parameter anzuwenden. – Gunnar

+0

Vielen Dank Ich habe [diese Ausgabe] erstellt (https://hibernate.atlassian.net/browse/HV-1494) – bilak

Verwandte Themen