使用Spring数据和Querydsl的通用代码失败
我使用使用Spring数据和Querydsl的通用代码失败,spring,hibernate,spring-data,querydsl,Spring,Hibernate,Spring Data,Querydsl,我使用querydsl,这就是为什么我不需要像findByName()这样的方法,而且我的存储库接口都是空的 因此,我尝试编写genric代码,以避免重复使用空方法的接口,因为在hibernate映射的实体中有许多类 public interface GenericResposotory<T> extends JpaRepository<T, Integer>, QueryDslPredicateExecutor<T> { }
querydsl
,这就是为什么我不需要像findByName()这样的方法,而且我的存储库接口都是空的
因此,我尝试编写genric代码,以避免重复使用空方法的接口,因为在hibernate映射的实体中有许多类
public interface GenericResposotory<T>
extends JpaRepository<T, Integer>, QueryDslPredicateExecutor<T> {
}
此外,没有一种方法可以像我尝试的那样创建通用存储库?Spring data尝试为您创建的所有扩展JpaRepository的接口创建bean。如果您想拥有一种不会使用的基本存储库,请使用标记您的接口存储库
是spring的标记接口,它可以帮助您找到自己的扩展存储库,并通过提取实体的类型来创建存储库。我们可以在RepositoryFactorySupport
中看到:
FactoryBean创建给定存储库接口的实例。
创建实现已配置*存储库接口的代理
并应用一个通知,将控件传递给
QueryExecuterMethodInterceptor。查询*检测策略可以是
通过设置QueryLookupStrategy.Key进行配置
我认为,这就是为什么不能直接创建通用存储库的原因
但您可以尝试使用RepositoryFactorySupport
(实现JpaRepositoryFactory
)生成存储库并手动将其放入上下文中
此外,您还可以通过将存储库定义为内部接口来减少项目和命名空间中的文件数量:只需添加一个属性,如下所示:
<jpa:repositories base-package="com.pack" consider-nested-repositories="true"/>
您使用的是哪个spring版本?我使用4.0.5.RELEASE作为spring数据,使用1.6.0.RELEASE作为spring数据jpaI标记,但我得到的无法自动关联字段:私有存储库。GenericRespository
当我尝试@Autowired private GenericRespository region\u repository代码>好,所以我误解了这个问题。我认为这个接口是其他东西的基础,您可以用其他接口扩展它。那样的话,我认为你不可能达到你想要的。您只需将genericinterface扩展为其他类,并将T设置为某个类。
<jpa:repositories base-package="com.pack" consider-nested-repositories="true"/>