我被这个问题缠住了。当我尝试运行我的Spring启动应用程序时,我会收到以下消息:
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in com.todolist.service.TaskService required a bean named 'entityManagerFactory' that could not be found.
Action:
Consider defining a bean named 'entityManagerFactory' in your configuration.
我正在使用Spring Data JPA,如果我理解正确的话,当我使用例如JpaRepository接口时,entityManager会自动实现到我的项目中。我是否遗漏了什么?即使我使用的是JpaRepository,我是否应该为entityManager定义一个bean?我尝试将其更改为CrudRepository,添加了Hibernate实体管理器等的依赖项,尝试在主端类中为注释指定基包,尝试在线找到解决方案,但似乎没有什么是正确的。
这是我的存储库界面:
@Repository
public interface TaskRepository extends JpaRepository<Task, UUID> {
}
使用此存储库的服务:
@Service
public class TaskService {
private final TaskRepository taskRepository;
private final ModelMapper modelMapper;
private final TaskMapper taskMapper;
public TaskService(TaskRepository taskRepository, ModelMapper modelMapper, TaskMapper taskMapper) {
this.taskRepository = taskRepository;
this.modelMapper = modelMapper;
this.taskMapper = taskMapper;
}
@Transactional
public TaskDTO addTask(CreateTaskDTO createTaskDTO) {
Task task = taskMapper.mapToEntity(createTaskDTO);
taskRepository.save(task);
return taskMapper.mapToDto(task);
}
@Transactional
public List<TaskDTO> fetchAll() {
List<Task> all = taskRepository.findAll();
return taskMapper.mapToDto(all);
}
@Transactional
public TaskDTO findById(UUID id) {
Optional<Task> task = taskRepository.findById(id);
return task.map(taskMapper::mapToDto).orElse(null);
}
}
@Component
public class TaskMapper {
public TaskDTO mapToDto(Task task) {
TaskDTO taskDTO = new TaskDTO();
taskDTO.setCategory(task.getCategory());
taskDTO.setDeadline(task.getDeadline());
taskDTO.setDescription(task.getDescription());
taskDTO.setId(task.getId());
taskDTO.setPriority(task.getPriority());
return taskDTO;
}
public List<TaskDTO> mapToDto(List<Task> taskList) {
if (Optional.ofNullable(taskList).isEmpty()) {
return new ArrayList<>();
} else {
return taskList.stream()
.map(this::mapToDto)
.collect(Collectors.toList());
}
}
public Task mapToEntity(CreateTaskDTO createTaskDTO) {
Task task = new Task();
task.setCategory(createTaskDTO.getCategory());
task.setDeadline(createTaskDTO.getDeadline());
task.setDescription(createTaskDTO.getDescription());
task.setPriority(createTaskDTO.getPriority());
return task;
}
}
实体类:
@Entity
@NoArgsConstructor
@Getter
@Setter
@Table(name = Task.TABLE_NAME)
public class Task {
public static final String TABLE_NAME = "task";
public static final String COLUMN_PREFIX = "t_";
public Task(String description, Category category, int priority, LocalDate deadline) {
this.id = id;
this.description = description;
this.category = category;
this.priority = priority;
this.deadline = deadline;
}
@Id
@GeneratedValue
@Type(type = "uuid-char")
private UUID id;
@Size(min = 4, max = 20, message = "{task.validation.description}")
@NotNull(message = "{task.validation.null}")
@Column(name = COLUMN_PREFIX + "id")
private String description;
@NotNull(message = "{task.validation.null}")
@Column(name = COLUMN_PREFIX + "category")
private Category category;
@Min(value = 1, message = "{task.validation.priority}")
@Max(value = 5, message = "{task.validation.priority}")
@Column(name = COLUMN_PREFIX + "priority")
private int priority;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@Column(name = COLUMN_PREFIX + "deadline")
private LocalDate deadline;
}
dto:
@Data
public class CreateTaskDTO {
private String description;
private Category category;
private int priority;
private LocalDate deadline;
}
@Data
@NoArgsConstructor
public class TaskDTO {
private UUID id;
private String description;
private Category category;
private int priority;
private LocalDate deadline;
}
注入beans的类:
@Configuration
public class Beans {
@Bean
public ModelMapper modelMapper() {
return new ModelMapper();
}
}
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>2.7.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>todolist</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>todolist</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-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
</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.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.22.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>4.5.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<version>2.6.6</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>2.4.5</version>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.0.6</version>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
<version>1.16.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>junit-jupiter</artifactId>
<version>1.16.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>mysql</artifactId>
<version>1.16.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.1</version>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
应用程序类别:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class }, scanBasePackages = "com.todolist")
@EntityScan
@EnableJpaRepositories
public class TodolistApplication {
public static void main(String[] args) {
SpringApplication.run(TodolistApplication.class, args);
}
}
您忘记在TaskService类的构造函数顶部添加@Autowire
@Autowire
public TaskService(TaskRepository taskRepository, ModelMapper modelMapper, TaskMapper taskMapper) {
this.taskRepository = taskRepository;
this.modelMapper = modelMapper;
this.taskMapper = taskMapper;
}
将此依赖项添加到 pom.xml
HibernateHibernate实体管理器 5.2.3.final
我正在开发一个小应用程序,只是为了自己尝试Spring Boot。它有五个不同的模块(eclipse项目): 模型——包含实体类、DTO和映射器以在它们之间切换 数据--包含存储库 服务——包含服务及其实现 reserve management--包含预订控制器和spring应用程序本身 人员管理-包含人员数据的控制器和Spring应用程序本身 如果我启动这两个应用中的任何一个,它们都可以正常运行
使用spring boot 2.0版本。0.M4我有这个问题:
我正在尝试部署我的spring应用程序。以下是pom的副本。xml文件。 以下是申请的副本。属性文件。 我得到的错误跟踪如下。 我被夹在中间。我几乎没试过什么东西。因为提供entityManager的hibernate JPA启动器是从pom中删除hibernate核心和hibernate实体管理器的。xml也是如此。但我也犯了同样的错误。除此之外,我还创建了自定义datasoruce,如下所示。
我正在开发Spring Boot应用程序,在启动服务器时遇到了这个错误。我不确定是否错误地定义了任何注释或缺少任何依赖项。任何帮助都将不胜感激。 主要类: UserService类: UserDAO类: @repository公共类UserDAO实现IUserDAO{ Build.gradle: 错误消息: 我看到了所有相关的答案,并尝试实现这些建议,如添加依赖项、在主类中添加符号等。但它显示了相
我有一个使用JPA、Web和PostgreSQL的简单Spring Boot项目。我使用的是最新的Spring Boot版本2.1.3。
我的应用程序无法启动。它由Spring Boot+JPA+SQLite组成。但是Spring Boot和MySQL都运行得很好。我不明白为什么会这样。 错误是 找不到名为“Entity ManagerFactory”的bean O.S.B.D.LoggingFailureAnalysisReporter: **********************************************