项目中尝试使用spring-data作为快速开发工具,今天需要实现一个具体的Repository,然后就自定义了一个,结果报下面的错误。
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property update found for type xxx.yyy.zzz.customer.model.Consumer at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:74) at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:326) at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:352) at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:352) at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:306) at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:270) at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:244) at org.springframework.data.repository.query.parser.Part.<init>(Part.java:73) at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:180) at org.springframework.data.repository.query.parser.PartTree$Predicate.buildTree(PartTree.java:260) at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:240) at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:68) at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:57) at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:90) at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:162) at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:68) at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:280) at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:148) at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:125) at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:41) at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142) ... 33 more
从错误来看是spring尝试着去解析这个类了,然后发生了错误,后来发现是命名规范不符合springdata的规范。
springdata的规范如下,要遵从repository-custom-impl的规范,具体如下:
public interface ConsumerRepository extends JpaRepository<Consumer, Long>,ConsumerRepositoryCustom { List<Consumer> findByCusinessType(int customerType); }
我们需要额外实现的一个自定义的方法:
public interface ConsumerRepositoryCustom { void updateCustomerNumber(Long oldId, Long newId); }
我们自定义的实现类:
public class ConsumerRepositoryImpl implements ConsumerRepositoryCustom{ @PersistenceContext private EntityManager entityManager; @Override public void updateCustomerNumber(Long oldId,Long newId){ Query query = entityManager.createQuery("fddffdfdfd"); query.setParameter(1, newId); query.setParameter(2, oldId); query.executeUpdate(); } }
在这个地方,我们经常会将实现类写成ConsumerRepositoryCustomImpl, 这样的话就出错了,从命名来看,我们可以看出来,最后说明一下如果我们的Repository是ICustomDao, 那么我们的custom接口应该命名成ICustomDaoCustom,相应的实现类就应该为ICustomDaoImpl.
相关推荐
总结来说,这个项目展示了如何将SpringBoot、Swagger、Druid和SpringData-jpa这四个技术组件整合,以实现一个高效的、有良好文档支持和数据库管理的Web服务应用。通过学习和实践这个项目,开发者可以深入理解这些...
【标题】"管理系统系列--仓库管理系统,SpringBoot+Spring Data JPA+......zip" 提供了一个关于构建仓库管理系统的项目框架,它利用了Spring Boot和Spring Data JPA等技术。这个系统旨在自动化仓库操作,提高库存...
然而,在实际开发过程中,我们可能遇到一个特定的问题,即使用自定义转换类型作为DTO(Data Transfer Object)进行投影时可能会出现错误。这个名为"spring-data-r2dbc-custom-dto-projection-bug-repro"的项目就是...
书中会详细介绍如何创建一个基本的Spring Boot项目,包括利用Spring Initializr生成项目结构、配置构建工具(如Maven或Gradle)、以及如何编写启动类。此外,还会深入讲解Spring Boot的自动配置机制,如何通过编写...
源码分析可以揭示Repository接口的动态代理实现,以及如何自定义查询方法。 8. **Spring Security** Spring Security是强大的安全框架,源码解析可以帮助理解权限控制、认证和授权的实现。例如,...
3. **Data Access Layer**:使用JPA和一个合适的数据库(如MySQL、PostgreSQL)实现数据持久化,提供对数据库的操作接口。 4. **Entity Classes**:定义了模型对象,映射到数据库表,使用JPA注解进行配置。 5. **...
总之,Spring Tool Suite 4 是一个专门为Spring开发者量身打造的高效、功能齐全的开发环境,它将Eclipse的强大功能与Spring生态的深度集成相结合,极大地提高了Spring应用的开发效率和质量。无论你是Spring初学者...
安全方面,Spring Boot提供了Spring Security模块,它是一个全面的安全管理框架,可以实现用户认证、授权等功能,确保应用的安全性。 总而言之,JavaEE_Spring Boot框架以其自动化配置、内置服务器、对微服务的优秀...
Spring Framework 是一个开源的Java...通过对源码的学习,你可以更深入地理解Spring的工作原理,这对于优化应用性能、排查问题,以及自定义扩展都非常有帮助。同时,了解Spring的架构设计,也能提升你的软件设计能力。
日志系统在Spring Boot中也很重要,它默认集成了Logback或Log4j2,我们可以配置日志级别和输出格式,方便调试和问题排查。 此外,Spring Boot还提供了自动配置(Auto Configuration)特性,它会根据类路径下的jar包...
【标题】"spring-data-jpa-log4jdbc-demo"是一个基于Spring Data JPA和Log4jdbc的日志记录示例项目,它展示了如何在JPA操作中集成日志功能,以跟踪数据库查询和事务处理。 【描述】这个项目的核心是将Log4jdbc库与...
这个名为“java一个用来深入学习并实战 Spring Boot 的项目”的压缩包文件,显然包含了一个完整的 Spring Boot 项目实例,非常适合学习和实践 Spring Boot 的核心概念和技术。 首先,让我们深入了解 Spring Boot 的...
在IntelliJ IDEA中通过Spring Boot集成达梦数据库是一个现代应用程序开发的重要步骤,尤其是在Java生态中。本教程将深入探讨如何实现这一目标,从基础设置到高级应用,帮助你从入门到精通。达梦数据库是一款由中国...
在标签中,“源码”意味着讨论可能涉及到Spring的内部实现,对于开发者来说,理解源码有助于深入学习框架的工作原理,提高问题排查和定制能力。“工具”可能指的是Spring提供的各种开发工具,如Spring Tool Suite...
Spring Boot 是一个基于 Spring 框架的快速开发工具,它极大地简化了创建独立的、生产级别的基于 Spring 应用的步骤。本视频教程将深入探讨 Spring Boot 的核心特性,帮助开发者快速掌握这一强大框架。 ### 一、...
Spring Cloud Sleuth是Spring Cloud的一个子项目,专注于服务追踪。它可以将追踪数据发送到Zipkin、HTrace或其他追踪后端,包括ElasticSearch。这样,我们可以在ElasticSearch中收集和分析微服务间的调用链路,帮助...
10. **问题排查与优化**:分享在Eclipse和Spring开发过程中可能遇到的问题及解决方案,以及如何优化项目结构和性能。 这个有聲教材将采用讲解和实例相结合的方式,帮助学习者逐步掌握Eclipse和Spring的结合使用,...
Spring Data JPA作为Spring Boot的一部分,提供了对JPA(Java Persistence API)的封装,简化了数据库操作。通过定义Repository接口,可以轻松实现数据的增删改查,同时支持事务管理和数据验证,确保数据一致性。 ...
Hibernate是JPA的一个实现,它扩展了JPA的功能,并提供了更强大的查询语言(HQL)和二级缓存等功能。在Spring Boot中,我们可以轻松集成Hibernate,只需在配置文件中设置相关属性,Spring Boot会自动配置并管理数据源...
【基于Spring的在线购物商城】是一个使用Spring框架构建的电子商务平台。Spring是一个广泛使用的Java企业级应用开发框架,以其依赖注入(Dependency Injection)和面向切面编程(Aspect-Oriented Programming)为...