Hibernate Books

All times are UTC - 5 hours [ DST ]



Post new topic Reply to topic  [ 4 posts ] 
Author Message
 Post subject: @Valid and Set<T> property
PostPosted: Tue Sep 15, 2009 7:35 am 
Newbie

Joined: Thu Sep 10, 2009 4:30 am
Posts: 3
Hi

I have a class with a property being a Set of generic type declared similar to this.

Code:
public class Batch<T extends Item> {

    @NotNull @Valid
    private Set<T> items;

}


When I try to validate an instance of Batch class, I get the following error:

Code:
javax.validation.UnexpectedTypeException: No validator could be found for type: T
   at org.hibernate.validation.engine.ConstraintTree.verifyResolveWasUnique(ConstraintTree.java:230)
   at org.hibernate.validation.engine.ConstraintTree.findMatchingValidatorClass(ConstraintTree.java:223)
   at org.hibernate.validation.engine.ConstraintTree.getInitalizedValidator(ConstraintTree.java:177)
   at org.hibernate.validation.engine.ConstraintTree.validateConstraints(ConstraintTree.java:119)
   at org.hibernate.validation.metadata.MetaConstraint.validateConstraint(MetaConstraint.java:127)
   at org.hibernate.validation.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:328)
   at org.hibernate.validation.engine.ValidatorImpl.validateConstraintsForRedefinedDefaultGroup(ValidatorImpl.java:280)
   at org.hibernate.validation.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:262)
   at org.hibernate.validation.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:215)
   at org.hibernate.validation.engine.ValidatorImpl.validateCascadedConstraint(ValidatorImpl.java:454)
   at org.hibernate.validation.engine.ValidatorImpl.validateCascadedConstraints(ValidatorImpl.java:360)
   at org.hibernate.validation.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:221)
   at org.hibernate.validation.engine.ValidatorImpl.validate(ValidatorImpl.java:119)
   at org.myapp.BatchTests.itemInvalid(BatchTests.java:73)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
   at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
   at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
   at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
   at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
   at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)
   at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
   at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
   at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
   at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
   at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
   at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
   at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
   at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
   at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
   at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)


Is this by design or is there any way to validate generic typed properties?

Thanks

Jaro


Top
 Profile  
 
 Post subject: Re: @Valid and Set<T> property
PostPosted: Tue Sep 22, 2009 8:06 am 
Newbie

Joined: Thu Aug 27, 2009 8:21 am
Posts: 13
I have a similar problem, except that I have instantiated the set against a concrete type:

@Valid @NotNull
private Set<GroupFieldData> groupFieldData = new LinkedHashSet<GroupFieldData>();

I've tried changing the code to use both a List and a Collection rather than a Set and the problem is still apparent. It appears to only occur when there is a second validation constraint on the field.

Bryan


Top
 Profile  
 
 Post subject: Re: @Valid and Set<T> property
PostPosted: Thu Oct 15, 2009 7:37 am 
Newbie

Joined: Thu Sep 10, 2009 4:30 am
Posts: 3
For the record, this is now fixed in trunk.


Top
 Profile  
 
 Post subject: Re: @Valid and Set<T> property
PostPosted: Thu Dec 23, 2010 4:43 pm 
Newbie

Joined: Thu Dec 23, 2010 4:31 pm
Posts: 1
class AaApplicant {
@Valid
private Set<AaApplicantAddr> aaApplicantAddrs = new HashSet<AaApplicantAddr>(0);
}

I'm getting a property index exception because I think the HashSet is not an index collection. I tried it with ArrayList it works.

Any help is appreciated


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 4 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.