繁体   English   中英

Spring 引导中的 ConversionNotSupportedException 问题

[英]ConversionNotSupportedException problem in Spring boot

有很多异常错误我不知道为什么。 但在我看来,它是关于 xml 或应用程序属性文件的。 它也是 springBoot 项目。 我想连接数据库 postgreSQL。顺便说一句,这将是 rentACar 应用程序

这是我的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>3.0.0</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>FirstSpringBootProject</groupId>
   <artifactId>RentACar</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>RentACar</name>
   <description>Demo project for Spring Boot</description>
   <properties>
      <java.version>17</java.version>
   </properties>
   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-jpa</artifactId>
      </dependency>
      <!-- https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api -->
      <dependency>
         <groupId>javax.persistence</groupId>
         <artifactId>javax.persistence-api</artifactId>
         <version>2.2</version>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-validation</artifactId>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springdoc</groupId>
         <artifactId>springdoc-openapi-ui</artifactId>
         <version>1.6.6</version>
      </dependency>

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-devtools</artifactId>
         <scope>runtime</scope>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.postgresql</groupId>
         <artifactId>postgresql</artifactId>
         <scope>runtime</scope>
      </dependency>
      <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>

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

   </dependencies>

   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
               <excludes>
                  <exclude>
                     <groupId>org.projectlombok</groupId>
                     <artifactId>lombok</artifactId>
                  </exclude>
               </excludes>
            </configuration>
         </plugin>
      </plugins>
   </build>

</project>

我的品牌服务界面



package FirstSpringBootProject.RentACar.business.abstracts;

import FirstSpringBootProject.RentACar.entities.concretes.Brand;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public interface BrandService {

    List<Brand> getAll();

}

我的品牌经理 class

package FirstSpringBootProject.RentACar.business.concretes;

import FirstSpringBootProject.RentACar.business.abstracts.BrandService;

import FirstSpringBootProject.RentACar.dataAccess.abstracts.BrandRepository;
import FirstSpringBootProject.RentACar.entities.concretes.Brand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class BrandManager implements BrandService {

    BrandRepository brandRepository;

    @Autowired
    public BrandManager(BrandRepository brandRepository) {
        this.brandRepository = brandRepository;
    }


    @Override
    public List<Brand> getAll() {
        return brandRepository.findAll();
    }
}

品牌资料库

package FirstSpringBootProject.RentACar.dataAccess.abstracts;

import FirstSpringBootProject.RentACar.entities.concretes.Brand;
import org.springframework.data.jpa.repository.JpaRepository;



public interface BrandRepository extends JpaRepository<Brand,Integer> {

}

品牌实体 class

package FirstSpringBootProject.RentACar.entities.concretes;

import lombok.*;


import javax.persistence.*;

@Table(name = "Brand")
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Entity
public class Brand {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private int id;
    @Column(name = "Name")
    private String name;


}

等等 controller

package FirstSpringBootProject.RentACar.webApi.Controller;

import FirstSpringBootProject.RentACar.business.abstracts.BrandService;


import FirstSpringBootProject.RentACar.entities.concretes.Brand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@Controller
@RestController
@RequestMapping("/api/brands")
public class BrandsController {
    BrandService brandService;

    @Autowired
    public BrandsController(BrandService brandService) {
        this.brandService = brandService;
    }

    @GetMapping("/getall")
    public List<Brand> getAll()
    {
        return brandService.getAll();
    }

}

应用程序属性

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.show-sql=true
spring.jpa.properties.javax.persistence.validation.mode = none
spring.datasource.url=jdbc:postgresql://localhost:5432/RentACarCamp1
spring.datasource.username=postgres
spring.datasource.password=Test
spring.datasource.driverClassName=org.postgresql.Driver
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

错误是这样的

org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“brandManager”的 bean 在文件 [C:\Users\User\Desktop\rentACar\target\classes\FirstSpringBootProject\RentACar\business\concretes\BrandManager.class] 中定义时出错:通过构造函数参数 0 表示的不满足的依赖关系:创建名称为“brandRepository”的 bean 在 FirstSpringBootProject 中定义时出错。 Proxy89 实施 org.hibernate.Session,org.springframework.orm.jpa.EntityManagerProxy' 到属性 'entityManager' 所需的类型 'javax.persistence.EntityManager'; 无法将类型“jdk.proxy4.$Proxy89 实现 org.hibernate.Session、org.springframework.orm.jpa.EntityManagerProxy”的值转换为属性“org.persistence.EntityManager”所需的类型“javax.persistence.EntityManager”:在属性“org or strategy”中找不到匹配的转换.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:793) ~[spring-beans-6.0.2.jar:6.0.2] 在 org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver. java:242) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1344) ~[spring-beans-6.0.2.jar:6.0 .2] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1188) ~[spring-beans -6.0.2.jar:6.0.2] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:561) ~[spring-beans-6.0.2.88202878901.088:561]:6.0 .factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java :326) ~[spring-beans-6.0.2.jar:6.0.2] 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.2.88601087:88601028 2] 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.2.jar:6.0.2] 在 org.springframework.beans.factory.support.AbstractBeanFactory。 getBean(抽象BeanFa ctory.java:200) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:961) ~[spring-beans-6.0.2.jar :6.0.2] 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:915) ~[spring-context-6.0.2.jar:6.0.2] 在 org.springframework.context.support.AbstractApplicationContext.refresh (AbstractApplicationContext.java:584) ~[spring-context-6.0.2.jar:6.0.2] 在 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.882132469945688 ~ 3.0.0.jar:3.0.0] 在 org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) ~[spring-boot-3.0.0.jar:3.0.0] 在 org.springframework.boot.SpringApplication.refreshCon 文本(SpringApplication.java:432)~[spring-boot-3.0.0.jar:3.0.0] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:308)~[spring-boot-3.0.0.88202878:901088 .0] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1302) ~[spring-boot-3.0.0.jar:3.0.0] 在 org.springframework.boot.SpringApplication.run(SpringApplication.java:1291 ) ~[spring-boot-3.0.0.jar:3.0.0] 在 FirstSpringBootProject.RentACar.RentACarApplication.main(RentACarApplication.java:10) ~[classes/:na] 在 java.base/jdk.internal.reflect.DirectMethod.HandleA调用(DirectMethodHandleAccessor.java:104)~[na:na] 在 java.base/java.lang.reflect.Method.invoke(Method.java:577)~[na:na] 在 org.springframework.boot.devtools。 restart.RestartLauncher.run(RestartLauncher.java:49) ~[spring-boot-devtools-3.0.0.jar:3.0.0] 原因:org.springframework.be ans.factory.BeanCreationException:在 FirstSpringBootProject.RentACar.dataAccess.abstracts.BrandRepository 中定义的名为“brandRepository”的 bean 创建时出错org.hibernate.Session,org.springframework.orm.jpa.EntityManagerProxy'到属性'entityManager'所需的类型'javax.persistence.EntityManager'; 无法将类型“jdk.proxy4.$Proxy89 实现 org.hibernate.Session、org.springframework.orm.jpa.EntityManagerProxy”的值转换为属性“org.persistence.EntityManager”所需的类型“javax.persistence.EntityManager”:在属性“org or strategy”中找不到匹配的转换.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:606) ~[spring-beans-6.0.2.jar:6.0.2] 在 org.springframework.beans.factory.support.AbstractAutowireBeanFactory.AbstractAutowireBeanFactory.AbstractAutowireCapableBeanFactory java:521) ~[spring-beans-6.0.2.jar:6.0.2] 在 org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans 2.jar:6.0.2] 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.2. jar:6.0.2] 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.2.jar:6.0.2] 在 org.springframework.beans支持.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.2.jar:6.0.2] 在org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.8821324:6458)8[spring] -beans-6.0.2.jar:6.0.2] 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1405) ~[spring-beans-6.0.2.jar:6.0.2frame] 在 org.0.2framework .beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1325) ~[spring-beans-6.0.2.jar:6.0.2] 在 org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument8.8862Resolver85.862Resolver85.862Resolver2.jar:6.0.2]第880章 ring-beans-6.0.2.jar:6.0.2] 在 org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:784) ~[spring-beans-6.0.2.jar:6.0.2]...省略了 22 个常见框架 原因:org.springframework.beans.ConversionNotSupportedException:无法转换类型为“jdk.proxy4.$Proxy89”的属性值,实施 org.hibernate.Session,org.springframework.orm.jpa.EntityManagerProxy属性“entityManager”的 EntityManager'; 无法将类型“jdk.proxy4.$Proxy89 实现 org.hibernate.Session,org.springframework.orm.jpa.EntityManagerProxy”的值转换为属性“entityManager”所需的类型“javax.persistence.EntityManager”:在属性“org or strategy”中找不到匹配的转换.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:594) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.AbstractNestablePropertyAccessor.convertForProperty(AbstractNestablePropertyAccessor.java:608) ~[spring- beans-6.0.2.jar:6.0.2] 在 org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:190) ~[spring-beans-6.0.2.jar:6.0.2] 在 org.springframework.beans support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1711) ~[spring-beans-6.0.2.jar:6.0.2] 在 org.sp ringframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1668) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java :1412) ~[spring-beans-6.0.2.jar:6.0.2] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598) ~[spring-beans-6.0.8.2.8886102 2] ... 省略了 32 个常见框架 原因:java.lang.IllegalStateException:无法将类型 'jdk.proxy4.$Proxy89 的值转换为 org.hibernate.Session,org.springframework.orm.88294518.1420属性“entityManager”的.EntityManager:在 org.springframework.beans.TypeConverterDelegat 中找不到匹配的编辑器或转换策略 e.convertIfNecessary(TypeConverterDelegate.java:262) ~[spring-beans-6.0.2.jar:6.0.2] at org.springframework.beans.AbstractNestablePropertyAccessor.convertIfNecessary(AbstractNestablePropertyAccessor.java:589) ~[spring-beans-6.0.2.jar :6.0.2]...省略了38个公共框架

进程结束,退出代码为 0

我从 stackOverflow 获取了一些代码,但一周内什么也没发现(

我已经找到了问题的根本原因。 问题的出现是因为pom.xml文件中存在以下依赖项。

      <dependency>
         <groupId>javax.persistence</groupId>
         <artifactId>javax.persistence-api</artifactId>
         <version>2.2</version>
      </dependency>

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

请删除这些依赖项,然后重试。

注意- 此 JPA 依赖项足以用于数据库连接。

      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-jpa</artifactId>
      </dependency>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM