当我想扩展时我正在使用 Spring BootSimpleJpaRepository
像这样的界面:
public interface BaseRepository<T, ID extends Serializable> extends JpaRepository<T, ID>{}
和这个实现:
public class BaseRepositoryImpl<T, ID extends Serializable> extends SimpleJpaRepository<T, ID> implements BaseRepository<T, ID>
{
private final EntityManager entityManager;
public BaseRepositoryImpl(Class<T> domainClass, EntityManager entityManager)
{
super(domainClass, entityManager);
this.entityManager = entityManager;
}
}
我收到以下错误:
Could not autowire. No beans of 'Class<T>' type found.
我该如何解决?
当尝试实施时JpaRepository
通过延伸SimpleJpaRepository
,重要的是 Spring 知道你正在这样做。默认情况下,spring会尝试创建一个SimpleJpaRepository
,即使你延长它。因此,您的新实施SimpleJpaRepository
不会被填充、创建甚至远程可用。因此,所有扩展您的新自定义存储库的存储库都将也不会被创建.
为了解决这个问题,应该添加一些存储库配置。更具体地说,您需要提供repositoryBaseClass
in the @EnableJpaRepositories
注解;例如
@Configuration
@EnableJpaRepositories(
repositoryBaseClass = RepositoryImpl.class
)
通常你已经有一些配置类来提供你的DataSource
-bean, EntityManager
-豆和/或JpaTransactionManager
-豆。作为一般最佳实践,我建议将其放置在那里。
有时,当你这样做时,spring 会有点困惑,并且仍然无法找到你新定义的repositoryBaseClass
。在这种情况下,请为 spring 存储库自动装配器提供一些帮助,并提供一个基础包,例如
@Configuration
@EnableJpaRepositories(
repositoryBaseClass = RepositoryImpl.class,
basePackages = {
"be.your.company.your.path.to.your.repositories"
}
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)