Hibernate Books

All times are UTC - 5 hours [ DST ]



Post new topic Reply to topic  [ 2 posts ] 
Author Message
 Post subject: [gelöst] validator ignoriert Constraints in Superklasse
PostPosted: Thu Nov 25, 2010 8:06 pm 
Newbie

Joined: Thu Nov 25, 2010 7:31 pm
Posts: 4
Hallo,

ich hab ein Problem, welches mich jetzt schon seit einiger Zeit beschäftigt. Leider konnte ich bisher keine Lösung dafür finden (weder in der Forumssuche noch bei Google).
Es geht um Folgendes: Ich habe eine Abstrakte Klasse "User" und eine Klasse "Accountant", welche eine Subklasse von User ist. In User habe ich Properties mit Constraints (JSR-303-Annotations) versehen. Wenn ich nun mit dem Hibernate-Validator ein Objekt von Typ Accountant validieren will, scheint es, als würde der Validator die Constraints der Superklasse komplett ignorieren und liefert mir keine Fehler.


User.java (ausschnitt):
Code:
public abstract class User {

   protected long uid;

   @NotNull
   @Size(min = 2, max = 50)
   protected String lastname;

   @NotNull
   @Size(min = 2, max = 50)
   protected String firstname;

   @NotNull
   @Email
   protected String email;

//rest ommited (incl. getter & setter)
}


Davon abgeleitet die klasse Accountant:
Code:
public class Accountant extends User {

   private boolean allowedToCreateContext;

   public boolean isAllowedToCreateContext() {
      return allowedToCreateContext;
   }

   public void setAllowedToCreateContext(boolean allowedToCreateContext) {
      this.allowedToCreateContext = allowedToCreateContext;
   }

}


So wird validiert:
Code:
protected void validate(Object v) {
      String className = v.getClass().getSimpleName();

      Set<? extends ConstraintViolation<?>> violations = beanValidator.validate(v);
      if (violations.size() != 0) {

         StringBuilder sb = new StringBuilder();
         sb.append("[");
         for (ConstraintViolation<?> cv : violations) {
            sb.append(cv.getPropertyPath() + " ");
         }
         sb.append("]");

         log.warn("Validation of " + className + "failed (" + violations.size() + " constraint violations ->" + sb.toString() + ")");
         throw new ValidationFailedException(violations);
      }
      log.debug("Successfully validated an instance of " + className);
   }


beanValidator wird von Spring injiziert, und ist wie folgt definiert:
Code:
<bean id="beanValidator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />


Dieser Code funktioniert so wie er soll, wenn man Beans validiert, die keine subklassen sind.

Der hibernate-validator hat die Version 4.0.2.GA.

Ich weiß langsam echt nicht mehr weiter, und würde mich freuen, wenn mir jemand helfen könnte!
LG,
deepthought-64


Last edited by deepthought-64 on Fri Nov 26, 2010 9:06 am, edited 1 time in total.

Top
 Profile  
 
 Post subject: Re: hibernate-validator ignoriert Constraints in Superklasse
PostPosted: Fri Nov 26, 2010 9:06 am 
Newbie

Joined: Thu Nov 25, 2010 7:31 pm
Posts: 4
oke, Problem gelöst.

ich hab in User unabsichtlich die falschen @NotNull Annotations drinnen gehabt. Und nachdem Eclipse den import-block folded, hab ich das nicht gesehen.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 2 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.