我发现QueryDslPredicateExecutor
对于减少样板非常有用,但它似乎正在投掷一把猴子扳手。我现在尝试使用自定义基类存储库扩展JpaRepository
,并且在启动时,Spring无法正确实例化存储库。
//Custom base class
@NoRepositoryBean
public interface IdAwareRepository<A, ID extends Serializable> extends JpaRepository<A, ID> {
// ID getId(A a);
}
// Base class implementation
public class IdAwareRepositoryImpl<A, ID extends Serializable>
extends SimpleJpaRepository<A, ID> implements IdAwareRepository<A, ID> {
public IdAwareRepositoryImpl(JpaEntityInformation<A, ?> entityInformation, EntityManager entityManager) {
super(entityInformation, entityManager);
}
}
// Individual repo
@Repository
public interface MyPojoRepository extends JpaRepository<MyPojo, Integer>, QueryDslPredicateExecutor<MyPojo> {
}
// Spring boot main application class
@EnableJpaRepositories(repositoryBaseClass = IdAwareRepositoryImpl.class)
@EntityScan(basePackageClasses = {Application.class, Jsr310JpaConverters.class})
@EnableAutoConfiguration(exclude = {
org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.ManagementWebSecurityAutoConfiguration.class})
@SpringBootApplication
public class Application {}
我已经尝试了几个关于这个主题的变体,但是没有幸运地成功连线。我在Spring的问题跟踪器https://jira.spring.io/browse/DATAJPA-674上遇到了类似的问题,但没有解释修复,只是代码被重构为更容易使用。
我收到以下错误:
引起: org.springframework.data.mapping.PropertyReferenceException:没有 物业找到所有类型MyPojo!在 org.springframework.data.mapping.PropertyPath。(PropertyPath.java:77) 在 org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:329) 在 org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:309) 在 org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:272) 在 org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:243) 在 org.springframework.data.repository.query.parser.Part。(Part.java:76) 在 org.springframework.data.repository.query.parser.PartTree $ OrPart。(PartTree.java:235) 在 org.springframework.data.repository.query.parser.PartTree $ Predicate.buildTree(PartTree.java:373) 在 org.springframework.data.repository.query.parser.PartTree $谓词(PartTree.java:353) 在 org.springframework.data.repository.query.parser.PartTree。(PartTree.java:84) 在 org.springframework.data.jpa.repository.query.PartTreeJpaQuery。(PartTreeJpaQuery.java:62) 在 org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy $ CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:100) 在 org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy $ CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:211) 在 org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy $ AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:74) 在 org.springframework.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor。(RepositoryFactorySupport.java:416) 在 org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:206) 在 org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:251) 在 org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:237) 在 org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:92) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
对我来说,Spring无法将自定义基类和QueryDslPredicateExecutor
扩展连接到JpaRepository
答案 0 :(得分:0)
我通过让我的基础存储库扩展QueryDslMongoRepository解决了类似的问题 您或许可以扩展类似的课程。