Ich versuche, eine Controller-Methode ähnlich wie in der neuesten Gosling-Release-Zug von Spring Data, die QueryDsl unterstützt dokumentiert. Ich habe den Controller wie im Beispiel in der Dokumentation unter http://docs.spring.io/spring-data/jpa/docs/1.9.0.RELEASE/reference/html/#core.web.type-safe gezeigt implementiert. Alles kompiliert und wenn ich die Anwendung starte (mit Spring Boot 1.2.5.RELEASE), fängt alles gut an.Ausnahme mit Spring Data JPA und QueryDsl über REST-Controller
Allerdings, wenn ich versuche, meine Ruhe Endpunkt zu nennen, ich die folgende Ausnahme immer erhalten:
org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.mysema.query.types.Predicate]: Specified class is an interface
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:101)
at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.createAttribute(ModelAttributeMethodProcessor.java:137)
at org.springframework.web.servlet.mvc.method.annotation.ServletModelAttributeMethodProcessor.createAttribute(ServletModelAttributeMethodProcessor.java:80)
Meine Vermutung ist, dass die QuerydslPredicateArgumentResolver
ist auf die Anforderung nicht angewendet wird, und damit die Ausnahme. Aber ich sehe, dass die QuerydslPredicateArgumentResolver
als eine Bean registriert ist, wenn ich den Spring Boot-Endpunkt /manage/beans
abfragen. Ich habe auch dafür gesorgt, dass @EnableSpringDataWebSupport
auf meiner @Configuration
Klasse keinen Effekt hat.
Ich habe die Steuerung mit @BasePathAwareController
kommentiert, da ich dies mit Spring Data REST bin und ich möchte, dass die Methoden, wie die, die unter einem ähnlichen Weg sein, die Spring Data REST aussetzt. Ich habe auch versucht mit @RepositoryRestController
, aber das schien nicht wichtig. Wenn Sie jedoch @RestController
verwenden und es unter einen anderen Pfad stellen als den Basispfad, den Spring Data REST verwendet, haben die Dinge funktioniert. Die Frage ist also, sollte es funktionieren?
jetzt Die gesamte Steuerung ist:
@RestController
@RequestMapping (value = "/ query") public class AvailController { privaten Repo letzte AvailRepository;
Ich habe es funktioniert, aber mit XML-Konfigurations. Vielleicht hilft dies https://stackoverflow.com/questions/32366562/how-do-i-configure-xml-querydsl-to-be-used-with-spring-data-and-spring-mvc –