Heim  >  Artikel  >  Java  >  Wie validiere ich mehrere Felder in Kombination mit JPA 2.0/Hibernate?

Wie validiere ich mehrere Felder in Kombination mit JPA 2.0/Hibernate?

Barbara Streisand
Barbara StreisandOriginal
2024-11-02 09:48:30539Durchsuche

How to Validate Multiple Fields in Combination using JPA 2.0/Hibernate?

Validierung mehrerer Felder in Kombination in JPA 2.0/Hibernate

Bei der Datenvalidierung mit JPA 2.0/Hibernate kann eine Validierung erforderlich sein die Kombination mehrerer Felder zur Gewährleistung der Datenintegrität. Betrachten Sie beispielsweise ein Modell mit zwei Feldern, getValue1() und getValue2(). Das Modell gilt als ungültig, wenn beide Felder null sind, andernfalls jedoch als gültig.

Einschränkungen auf Klassenebene für die Validierung mehrerer Felder

Um mehrere Eigenschaften in Verbindung zu validieren, können Sie Folgendes tun Einschränkungen auf Klassenebene nutzen. Mit der Bean Validation-Spezifikation können Sie benutzerdefinierte Einschränkungen definieren, die für eine gesamte Klasse und nicht für einzelne Eigenschaften gelten. Dieser Ansatz bietet Flexibilität für die Durchführung komplexer Validierungen, die Zugriff auf mehrere Felder erfordern.

So definieren Sie eine Einschränkung auf Klassenebene

Um eine Einschränkung auf Klassenebene zu definieren, folgen Sie den Anweisungen Diese Schritte:

  1. Erstellen Sie eine neue Annotationsklasse, die mit @Target(ElementType.TYPE) und @Retention(RetentionPolicy.RUNTIME) annotiert ist. Diese Annotation stellt Ihre Einschränkung dar.
  2. Implementieren Sie eine Einschränkungsvalidatorklasse, die ConstraintValidator erweitert. Überschreiben Sie in Ihrer Validator-Klasse die Methode isValid(), um die eigentliche Validierungslogik auszuführen.
  3. Erstellen Sie eine Validierungsgruppenschnittstelle, die die Reihenfolge angibt, in der Einschränkungen angewendet werden sollen.

Beispielimplementierung

Unten finden Sie eine Beispielimplementierung einer Einschränkung auf Klassenebene zur Validierung der Kombination von getValue1() und getValue2():

<code class="java">@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = MyModelConstraintValidator.class)
public @interface MyModelConstraint {
    String message() default "{error.invalidModel}";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

public class MyModelConstraintValidator implements ConstraintValidator<MyModelConstraint, MyModel> {
    public void initialize(MyModelConstraint constraintAnnotation) {}

    public boolean isValid(MyModel object, ConstraintValidatorContext context) {
        // Perform validation logic here
        return !(object.getValue1() == null && object.getValue2() == null);
    }
}</code>

Anwenden die Einschränkung auf Klassenebene

Annotieren Sie Ihre MyModel-Klasse mit der Annotation @MyModelConstraint, um die Einschränkung auf Klassenebene anzuwenden:

<code class="java">@MyModelConstraint
public class MyModel {
    public Integer getValue1() { ... }
    public String getValue2() { ... }
}</code>

Bei der Validierung einer MyModel-Instanz wird nun das Framework verwendet wendet den MyModelConstraintValidator an und stellt sicher, dass sowohl getValue1() als auch getValue2() ungleich Null sind, bevor das Modell als gültig betrachtet wird.

Das obige ist der detaillierte Inhalt vonWie validiere ich mehrere Felder in Kombination mit JPA 2.0/Hibernate?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn