我正在try 编译我的Spring Boot项目,但由于错误required a bean of type 'jakarta.persistence.EntityManager' that could not be found.the error is in TypeHunterDAOJpaImplementation.java,我在运行应用程序时遇到了问题.

  • application.properties
# PostgreSQL
spring.datasource.url=jdbc:postgresql://localhost:5432/my_database
spring.datasource.username=postgres
spring.datasource.password=12345678
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
  • TypeHunter.java
import jakarta.persistence.*;

@Entity
@Table(name="type_hunters")
public class TypeHunter {

    @Id
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name="description")
    private String description;

    public TypeHunter() {  // No-arg constructor for JPA

    }

    public TypeHunter(int id, String description) {
        this.id = id;
        this.description = description;
    }

    public int getId() { return id; }
    public void setId(int id) { this.id = id; }
    public String getDescription() { return description; }
    public void setDescription(String description) { this.description = description; }
}
  • TypeHunterDAO.java
import java.util.List;

public interface TypeHunterDAO {

    List<TypeHunter> findAll();

}
  • TypeHunterDAOJpaImplementation.java
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.persistence.TypedQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public class TypeHunterDAOJpaImplementation implements TypeHunterDAO {

    @PersistenceContext
    private EntityManager entityManager;

    @Autowired
    public TypeHunterDAOJpaImplementation(EntityManager theEntityManager){
        entityManager = theEntityManager;
    }

    @Override
    public List<TypeHunter> findAll() {
        if (entityManager == null) throw new IllegalStateException("EntityManager does not work correctly.");
        TypedQuery<TypeHunter> query = entityManager.createQuery("from TypeHunter", TypeHunter.class);
        return query.getResultList();
    }

}
  • TypeHunterREST.java
import com.user.springboot3.project.DAO.TypeHunterDAO;
import com.user.springboot3.project.Entity.TypeHunterHunter;
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;

@RequestMapping("/api")
@RestController
public class TypeHunterRest {

    private TypeHunterDAO type_hunter;

    public TypeHhnterRest(TypeHunterDAO typeHunterDAO) {
        this.type_hunter = typeHunterDAO;
    }

    @GetMapping("/type-hunter")
    public List<TypeHunter> findAll() {
        return type_hunter.findAll();
    }
}

建议的操作为Consider defining a bean of type 'jakarta.persistence.EntityManager' in your configuration.

在我的pom.xml人中有:

        <dependency>
            <groupId>jakarta.persistence</groupId>
            <artifactId>jakarta.persistence-api</artifactId>
            <version>3.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.6.6.Final</version>
        </dependency>

我想,这肯定起作用了.

推荐答案

EntityManagerFactory Bean Configuration:如果Spring Boot在类路径上检测到Spring data、JPA或Hibernate,而您使用的是spring-boot-starter-data-jpa,它通常会自动配置EntityManagerFactory.确保您的pom.xml中具有以下启动依赖项:

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

DataSource Configuration:确保您的application.propertiesapplication.yml文件正确配置了数据源详细信息,如URL、用户名和密码,以及JPA属性.

示例application.properties配置:

spring.datasource.url=jdbc:mysql://localhost:3306/yourdatabase
spring.datasource.username=yourusername
spring.datasource.password=yourpassword
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect

Java相关问答推荐

Spring安全实现多个SQL表身份验证

Cosmos Change Feed Process Lag远远超过收集中的记录数量

BiPredicate和如何使用它

当我用OkHttpClient重写shouldInterceptRequest来发布数据时,Android WebView正在以纯HTML加载URL内容

为什么Java中的两个日期有差异?

Java WireMock定义存根在Cucumber并行执行的多线程测试中失败

尽管类型擦除,instanceof与泛型在Java中如何工作?

多个Java线程和TreeMap.put()的非预期行为

使用JdkClientHttpRequestFactory通过Spring RestClient和Wiemock读取时达到EOF

Spring Boot Maven包

当涉及到泛型时,类型推理在Java中是如何工作的?

如何在Spring Java中从数据库列中获取JSON中的具体数据

如何将其他属性引用到log4j2 yaml配置中?

如何集成语义发布和BitBucket(Java项目)

在Frege中,我如何将一个字符串安全地转换为一个可能的Int?

当b是一个字节并且在Java中值为-1时,为什么b>;>;>;1总是等于-1?

如何在ImageIO或十二只猴子中旋转TIFF CMYK图像?

如何在运行docker的应用程序中获取指定的配置文件

为什么使用lo索引来解决二进制搜索问题不同于使用hi索引?

在JSON上获取反斜杠