无法使用弹簧数据 jpa CrudRepository

Posted

技术标签:

【中文标题】无法使用弹簧数据 jpa CrudRepository【英文标题】:Unable to use spring data jpa CrudRepository 【发布时间】:2019-03-17 08:43:00 【问题描述】:

我正在尝试使用 Spring 数据 jpa 中的 CrudRepository。我在 spring-servlet.xml 文件中遇到错误。我想我缺少一些配置。

spring-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans "             
    xmlns:ctx="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
     xmlns:repository="http://www.springframework.org/schema/data/repository"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
 http://www.springframework.org/schema/mvc
 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-2.5.xsd
 http://www.springframework.org/schema/data/jpa
 http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
">
    <ctx:annotation-config></ctx:annotation-config>
    <mvc:annotation-driven />
    <ctx:component-scan base-package="com.entransys"></ctx:component-scan>
    <!-- <repositories base-package="com.entransys.repositories" /> -->
    <jpa:repositories base-package="com.entransys.repository"/>


    <bean
        class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
    <bean
        class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

    <bean class="org.springframework.data.web.config.SpringDataWebConfiguration" />

    <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/springdata" />
        <property name="username" value="root" />
        <property name="password" value="root" />
    </bean>

    <bean id="multipartResolver"
        class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />

    <bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
</beans>

我在 pom.xml 中添加了以下依赖项

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>2.0.8.RELEASE</version>
</dependency>

错误

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:

来自 ServletContext 资源的 XML 文档中的第 15 行 [/WEB-INF/spring-servlet.xml] 无效;嵌套异常是 org.xml.sax.SAXParseException;行号:15;列号:4; cvc-elt.1:找不到元素“beans”的声明。 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:399) 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336) 在 org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217) 在 org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188) 在 org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) 在 org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)

【问题讨论】:

我想我缺少一些配置。 - 为什么?你有问题吗? 发布错误:) 你能发布你得到的吗? 我已经编辑并添加了错误。请检查 【参考方案1】:

这里只有尾随空格:xmlns="http://www.springframework.org/schema/beans "spring-servlet.xml 中的第 2 行。去掉就好了。

【讨论】:

删除空间后出现以下错误Error creating bean with name 'jpaMappingContext': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: At least one JPA metamodel must be present! 这个新错误与第一个错误无关。快速查看 *** 表明它很可能与错误的 Maven 依赖项有关。

以上是关于无法使用弹簧数据 jpa CrudRepository的主要内容,如果未能解决你的问题,请参考以下文章

弹簧数据 JPA。子实体的分页

带有谓词的弹簧数据 JPA 方法 findAll() - QueryDslPredicateExecutor

弹簧数据 jpa utf-8 编码不起作用

弹簧数据 JPA。在中查找

无法使用弹簧自定义过滤器对用户进行身份验证

停止/重新部署时 Tomcat 7+ 内存泄漏。弹簧数据,JPA,休眠,MySQL