Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Spring数据和Querydsl的通用代码失败_Spring_Hibernate_Spring Data_Querydsl - Fatal编程技术网

使用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"/>