当前位置: 首页 > 知识库问答 >
问题:

没有“org”类型的合格bean。springframework。数据jpa。存储库。支持JPA实体信息

淳于乐池
2023-03-14

我试图通过BaseRepository接口和BaseRepositoryImpl扩展**SimpleParepository**
BaseRepositoryImpl扩展了**SimpleParepository**并实现了BaseRepository。

此外,我还有一些其他的存储库,如CandidateRepository和员工存储库,它们扩展了基本存储库。

下面您可以看到以下错误代码:

要查看项目结构,请单击此处

    @NoRepositoryBean  
    public interface BaseRepository<T, ID extends Serializable> extends JpaRepository<T, ID>{
//..
}


@Repository
public abstract class BaseRepositoryImpl<T, ID extends Serializable> extends 
                                                    SimpleJpaRepository<T, ID> implements BaseRepository<T, ID>{

    private final EntityManager em;

    public BaseRepositoryImpl(JpaEntityInformation<T,ID> entityInformation, 
                                EntityManager entityManager) {

      super(entityInformation, entityManager);
      this.em = entityManager;

  }
  //..
}

扩展存储库:

@NoRepositoryBean
    public interface CandidateRepository extends BaseRepository<DatCandidate, UUID>{

        //..
    }


@Repository(value="CandidateRepositoryImpl")
public class CandidateRepositoryImpl extends BaseRepositoryImpl<DatCandidate, UUID> implements CandidateRepository{


    public CandidateRepositoryImpl(
            JpaEntityInformation<DatCandidate, UUID> entityInformation,
            EntityManager entityManager) {

        super(entityInformation, entityManager);

    }
}

下面是我的配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">

    <context:annotation-config />
    <context:component-scan base-package="com.projects"></context:component-scan>

    <jpa:repositories base-package="com.projects.repositories.impl" 
    base-class="com.projects.repositories.impl.BaseRepositoryImpl"></jpa:repositories>

    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="punit" />
        <property name="dataSource" ref="dataSource" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="showSql" value="true" />
            </bean>
        </property>
        <property name="jpaPropertyMap">
            <map>
                <entry key="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
                <entry key="hibernate.hbm2ddl.auto" value="none"/>
                <entry key="hibernate.format_sql" value="true" />
            </map>
        </property>
    </bean>

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory"/>
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager"/>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/relocationdb?autoReconnect=true" />
        <property name="username" value="root"></property>
        <property name="password" value="1234" />
    </bean>


</beans>

服务:

@Service(value="CandidateServiceImpl")
public class CandidateServiceImpl extends BaseServiceImpl<CandidateForCreationDto, CandidateDto,DatCandidate, UUID> 
                                implements CandidateService{

    private CandidateRepositoryImpl  candidateRepository;

        @Autowired
    public CandidateServiceImpl (
            @Qualifier("CandidateRepositoryImpl") JpaRepository<DatCandidate, UUID> candidateRepository
            ) {
        this.candidateRepository = (CandidateRepositoryImpl)candidateRepository;
    }
}

错误:

通过构造函数参数0表示的未满足的依赖;嵌套异常org.springframework.beans.factory.NoSuchBean定义异常:没有可用的“org.springframework.data.jpa.repository.support.JpaEntityInformation”类型的合格bean:预计至少有1个bean符合自动联线候选资格。依赖注释:{}

我遵循了Spring JPA文档,但无法理解错误

附件是运行代码

21, 2018 4:39:16PMorg.apache.catalina.core.标准上下文启动内部严重:一个或多个侦听器无法启动。完整的详细信息将在相应的容器日志文件中找到21, 2018 4:39:16PMorg.apache.catalina.core.标准上下文启动内部SEVERE:上下文[/重定位]启动失败,由于以前的错误21, 2018 4:39:16PMorg.apache.catalina.core.应用上下文日志信息:关闭Spring根目录WebApplication Context21, 2018 4:39:16PMorg.apache.catalina.loader.WebappClassLoaderBase clearRe缴费Jdbc SEVERE:Web应用程序[/重定位]注册了JDBC驱动程序[com.mysql.jdbc.驱动程序],但在Web应用程序停止时未能取消注册。为了防止内存泄漏,JDBC驱动程序被强制取消注册。21, 2018 4:39:16PMorg.apache.catalina.loader.WebappClassLoaderBase clearRemiscesThreadsSEVERE:Web应用程序[/重定位]似乎已经启动了一个名为[废弃连接清理线程]的线程,但未能阻止它。这很可能会造成内存泄漏。21, 2018 4:39:16PMSorg.apache.coyote.AbstractProtocol start INFO:启动协议处理程序["超文本传输协议-bio-8080"] מרץ 21, 2018 4:39:16PMSorg.apache.coyote.AbstractProtocol start INFO:启动协议处理程序["ajp-bio-8009"] מרץ 21, 2018 4:39:16PMorg.apache.catalina.startup.Catalina启动信息:服务器启动在17422 ms

共有2个答案

宇文智敏
2023-03-14

为了实用,您正在尝试扩展SimpleParepository

此外,正如@jens schauder所说,你的混合概念。

试着按照这个解释得很好的教程去做,看看它是否有用。

封弘伟
2023-03-14

你在这里做了一些奇怪的事情。

一方面,通过在CandidateRepository上使用@NoRepositoryBean并提供自己的实现,您可以有效地禁用所有Spring Data内容

我想是时候下定决心了:

>

如果是这样,扩展它,让构造函数保持原样,并将其用作您的repositoryBaseClass。下面是一个如何做到这一点的教程。

只需为一个(或一些)存储库提供自定义实现。然后使用自定义实现。

 类似资料:
  • 我正在用Spring Boot实现Rest API。由于我的实体类来自另一个包的包,所以我必须使用注释来指定。此外,我使用指定定义JPA存储库的包。下面是我的项目的样子: 在我的controller类中,我有一个SeqService对象自动连线。 是一个接口,我通过它为创建了一个Bean类。在中,我自动连接了JPA存储库: 我不明白这个错误。跟排位bean有什么关系?

  • 我应该如何修复这个错误? 证券配置 网络配置 错误 组织。springframework。豆。工厂UnsatifiedPendencyException:创建名为“securityConfig”的bean时出错:通过方法“setAuthenticationProvider”参数0表示的未满足的依赖关系;嵌套的异常是org。springframework。豆。工厂NoSuchBean定义异常:没有“

  • 我正在用Spring Boot实现Rest API。因为我的实体类来自另一个包,所以我必须用注释来指定它。另外,我使用来指定定义JPA存储库的包。下面是我的项目的样子: 在我的controller类中,我有一个SeqService对象Autowired。 是一个接口,我从它为创建了一个Bean类。在中,我对JPA存储库进行了描述: 我不明白这个错误。和排位赛bean有什么关系?

  • 我正在尝试在Spring应用程序中设置第二个数据源。以下是两个数据源的两个配置类: 第二个配置类: 我在com上看到过。XYXYale。坚持不懈XY a Spring数据JPA回购协议定义如下 德莫雷波 人口学 DemoRepoImpl 回购协议的使用方式如下: 我得到一个例外: 有人对如何解决这个问题有建议吗?我可以想到为每个回购注入正确的实体经理,但是我不知道如何做到这一点。 提前感谢。在这里

  • 问题内容: 我使用的是Spring-boot,因此在Tomcat 7中部署了战争。启动应用程序时,我得到以下信息: 这是我的应用程序启动的方式: 当我的Spring控制器处理连接时: 它在userService上执行getUser: 使用userDao查找实体: 我在/ src / main / resources中具有以下spring-config.xml: 最后但并非最不重要的是以下/src/

  • 问题内容: 我无法开始使用。我已经按照本指南创建了一个简单的Spring Boot应用程序,但是使用了Hibernate和相关的配置。 build.gradle: 每当我尝试运行该应用程序时,都会得到以下结果: 我已经看到此错误(据报道,该错误已从1.10.7开始修复),但降级至 1.9.x 并没有帮助,我仍然遇到相同的错误。 有任何想法吗? 问题答案: 问题出在。从依赖项中删除它可以解决此问题。