org.h2.jdb c .JdbcSQLIntegrityConstraintViolationException: NULL не допускается для столбца "BACKLOG_ID" - PullRequest
0 голосов
/ 18 марта 2020

Я пытаюсь сопоставить свой класс Backlog с классом Projecttask , используя тот же backlog_id, чтобы к нему было легко получить доступ. Когда я делаю это, помещая backlog_id, я получаю эту ошибку: org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException: NULL not allowed for column BACKLOG_ID;

Что у меня сейчас есть:

Класс проекта:

@Entity
public class Project {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    @NotBlank(message="project name is required")
    private String projectName;
    @NotBlank(message="project Identifier is required")
    @Size(min=4,max=5,message="please use 4to 5 character")
    @Column(updatable=false ,unique=true)
    private String projectIdentifir;
    @NotBlank(message="project description is required")
    private String description;
    @JsonFormat(pattern="yyyy-mm-dd")
    private Date create_date;
    @JsonFormat(pattern="yyyy-mm-dd")
    @Column(updatable=false)
    private Date upate_date;
    //@Autowired

    @OneToOne(fetch=FetchType.EAGER,cascade=CascadeType.ALL,mappedBy="project")
    //@Autowired
    //Backlog backlog=new Backlog();
    @JsonIgnore
    private Backlog backlog;

    @PrePersist
    protected  void onCreate()
    {
        this.create_date=new Date();
    }
    @PreUpdate
    protected void onUpdate()
    {
        this.upate_date=new Date();
    } 

    //Getters + Setters
}

Класс проектной задачи:

@Entity
public class Projecttask {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    @Column(updatable=false)
    private String projectSequence; 
    @NotBlank(message="please include a project summary")
    private String summary;
    private String acceptanceCriteria;
    private String status;
    private Integer priority;
    private Date dueDate;
    private Date create_At;
    private Date update_At;
    @Column(updatable=false)
    private String projectIdentifir;
    //ManyToOne with Backlog
    @ManyToOne(fetch=FetchType.EAGER,cascade=CascadeType.REFRESH)
    @JoinColumn(name="backlog_id",nullable=false,updatable=false)
    @JsonIgnore
    private Backlog backlog;

    @PrePersist
    protected void onCreate() {
        this.create_At=new Date();

    }
    @PreUpdate
    protected void onUpdate() {
        this.update_At=new Date();
    }

    //Getters + Setters     

    @Override
    public String toString() {
        return "Projecttask [id=" + id + ", projectSequence=" + projectSequence + ", summary=" + summary
                + ", acceptanceCriteria=" + acceptanceCriteria + ", status=" + status + ", priority=" + priority
                + ", dueDate=" + dueDate + ", create_At=" + create_At + ", update_At=" + update_At
                + ", projectIdentifir=" + projectIdentifir + ", backlog=" + backlog + "]";
    }
}

Класс невыполненных работ:

@Entity
public class Backlog {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;
    private Integer PTSequence=1;
    private String projectIdentifir;
    // with project
    @OneToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="project_id",nullable=false)
    //@Autowired
    @JsonIgnore
    private Project project;

    //OneTOMany projectTask
    @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="backlog")
    private List<Projecttask> projecttask=new ArrayList<>();

    //Getters + Setters     
}

Класс ProjectTaskService:

    @Service
    public class ProjectTaskService {
        @Autowired
     private BacklogRepository backlogRepository;
        @Autowired
     private ProjecttaskRepository projecttaskRepository;

    public Projecttask addProjecttask(String projectIdentifir,Projecttask projecttask){
        //Exception:project not found
        //Pts to be added to a specific project!==null(project)
        Backlog backlog=backlogRepository.findByProjectIdentifir(projectIdentifir);
        //set the bl to pt
        projecttask.setBacklog(backlog);
        System.out.println(backlog);
        // we want our project sequence to be like this  IDPRO-1,IDPRO-2,...100101
        //System.out.println(backlog.getPTSequence());
        //Integer BacklogSequence = backlog.getPTSequence();

        //update the bl sequnce 
        //BacklogSequence++;
        //Add Sequence to Project Task

        int counter=0;
        //projecttask.setProjectSequence(projectIdetifir+"-"+(++counter));
        projecttask.setAcceptanceCriteria(projectIdentifir+"-"+counter);
        counter=counter+1;
        //backlog.setPTSequence(counter);
        projecttask.setProjectIdentifir(projectIdentifir);
        //projectTask.setProjectIdentifir(projectIdentifir);
        //intial periority when peroirity is null
        if( projecttask.getPriority()==null) {
            projecttask.setPriority(3);
    }
        //initail status when status is null
        if(projecttask.getStatus()==null) {
            projecttask.setStatus("TO_DO");
        }

          return projecttaskRepository.save(projecttask);
    }

     public Iterable<Projecttask>findBacklogById(String id){
        return projecttaskRepository.findByProjectIdentifirOrderByPriority(id);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...