我一直遇到这个问题,我不知道如何解决。我使用来自 javax.persistence 的 EntityManager 但是当我运行程序时,它说构造函数正在寻找一个 Bean。
有问题的班级:
package com.example.demo.client.service;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.stereotype.Service;
import com.example.demo.client.payload.AfipClientDTO;
@Service
@PropertySource({ "classpath:application.properties" })
public class ClientServiceImp implements ClientService{
@PersistenceContext
private final EntityManager em;
@Autowired
ClientServiceImp(@Qualifier("afipEntityManager") EntityManager entityManager) {
this.em = entityManager;
}
@SuppressWarnings("unchecked")
@Override
public AfipClientDTO getAfipClientByDoc(String doc) {
String query = "select a.id, a.nombre from afipclient a where a.doc = " + "\'" + doc +"\'";
Query q = em.createNativeQuery(query);
List<Object[]> result = q.getResultList();
//List<AfipClientDTO > lst = new ArrayList<>();
AfipClientDTO ac = new AfipClientDTO();
for(Object[] obj : result) {
ac.setDoc(doc);
ac.setId((Long)obj[1]);
ac.setNombre((String)obj[2]);
}
//Page<AfipClientDTO> pageToReturn = new PageImpl<AfipClientDTO>(lst);
return ac;
}
}
我的pom:
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.adalove</groupId>
<artifactId>gestor</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>gestor</name>
<description>Gestor</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<!-- Exploit in 2.0 a 2.16: https://spring.io/blog/2021/12/10/log4j2-vulnerability-and-spring-boot -->
<log4j2.version>2.17.0</log4j2.version>
<!-- Lesser Vulnerability: https://stackoverflow.com/questions/70329808/is-logback-also-affected-by-log4j-0-day-vulnerability-issue-in-spring-boot -->
<logback.version>1.2.9</logback.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!--Oracle database driver -->
<!-- <dependency> -->
<!-- <groupId>com.oracle</groupId> -->
<!-- <artifactId>ojdbc8</artifactId> -->
<!-- <version>12.2.0.1</version> -->
<!-- <scope>system</scope> -->
<!-- <systemPath>${project.basedir}/lib/ojdbc8/12.2.0.1/ojdbc8-12.2.0.1.jar</systemPath> -->
<!-- <type>jar</type> -->
<!-- <optional>false</optional> -->
<!-- </dependency> -->
<!--Oracle database driver -->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.2.0.1</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<!-- For Working with Json Web Tokens (JWT) -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<!-- For Java 8 Date/Time Support -->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-core</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>org.springframework.plugin</groupId>
<artifactId>spring-plugin-core</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
我尝试为@Autowired 修改@PersistenceContext。 还尝试更新项目,但似乎没有任何效果。有什么建议吗?