【问题标题】:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'projectTaskRepository'org.springframework.beans.factory.BeanCreationException:创建名为“projectTaskRepository”的bean时出错
【发布时间】:2020-11-04 00:14:34
【问题描述】:

我正在 Spring Boot 上做项目...但在运行应用程序时出现此错误。可能是 H2 数据库错误。但是要解决错误 localhost 应该运行但程序在部署之前终止..所以我无法看到实际问题是什么。

错误:org.springframework.beans.factory.BeanCreationException:创建 com.agileintelligence.projectdashboard.repository.ProjectTaskRepository 中定义的名称为“projectTaskRepository”的 bean 时出错jpaMappingContext' 同时设置 bean 属性'mappingContext';嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“jpaMappingContext”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.AnnotationException:没有为实体指定标识符:com.agileintelligence.projectdashboard.domain.projectTask

表格类

package com.agileintelligence.projectdashboard.domain;
import org.springframework.data.annotation.Id;
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.validation.constraints.NotBlank;

@Entity
public class projectTask {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

@NotBlank(message = "Summary cannot be empty")
private String summary;
private String acceptanceCriteria;
private String status;

public projectTask() {
}

public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

public String getSummary() {
    return summary;
}

public void setSummary(String summary) {
    this.summary = summary;
}

public String getAcceptanceCriteria() {
    return acceptanceCriteria;
}

public void setAcceptanceCriteria(String acceptanceCriteria) {
    this.acceptanceCriteria = acceptanceCriteria;
}

public String getStatus() {
    return status;
}

public void setStatus(String status) {
    this.status = status;
}
}

控制器

package com.agileintelligence.projectdashboard.web;

import com.agileintelligence.projectdashboard.domain.projectTask;
import com.agileintelligence.projectdashboard.service.ProjectTaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/board")
@CrossOrigin
public class ProjectTaskController {

    @Autowired
    private ProjectTaskService service;

    @PostMapping("")
    public ResponseEntity<?> addProjectTaskToBoard(@RequestBody projectTask projectTask){

        com.agileintelligence.projectdashboard.domain.projectTask newPT = service.saveOrUpdateProjectTask(projectTask);
        return new ResponseEntity<>(newPT, HttpStatus.CREATED);
    }
}

服务类

package com.agileintelligence.projectdashboard.service;

import com.agileintelligence.projectdashboard.domain.projectTask;
import com.agileintelligence.projectdashboard.repository.ProjectTaskRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ProjectTaskService {

    @Autowired
    private ProjectTaskRepository projectTaskRepository;

    public projectTask saveOrUpdateProjectTask(projectTask projectTask){

        //In case if status is not set,automatically push it to TO_DO
        if(projectTask.getStatus()==null||projectTask.getStatus().equals("")){
            projectTask.setStatus("TO_DO");
        }
        return projectTaskRepository.save(projectTask);
    }
}

存储库

package com.agileintelligence.projectdashboard.repository;

import com.agileintelligence.projectdashboard.domain.projectTask;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ProjectTaskRepository extends CrudRepository<projectTask,Long> {

}

【问题讨论】:

  • 你的数据库中创建了序列吗?
  • 我无法打开控制台....因为本地主机没有运行。它终止并最终。
  • 删除@GeneratedValue(strategy = GenerationType.IDENTITY) 并启动应用程序。您可能缺少 Hibernate 在启动时所需的顺序。
  • @MladenSavić 删除“@GeneratedValue”并运行应用程序...但没有运气..仍然显示相同的错误..

标签: java spring spring-boot spring-data-jpa h2


【解决方案1】:

您在此处为 Id 使用了错误的导入。

import org.springframework.data.annotation.Id;

将上面的替换为持久包中的下面。

import javax.persistence.Id

奖励:使用 ProjectTask(P 大写)重命名您的实体,以防止将来出现奇怪的问题。

【讨论】:

  • 谢谢你成功了。但它没有在数据库中创建任何表?
  • 这不是我的情况,但面临同样的错误。运气好吗?
猜你喜欢
  • 2016-06-05
  • 2020-02-21
  • 2018-04-27
  • 2020-10-20
  • 2021-11-11
  • 2012-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多