【问题标题】:Update database ManytoOne relationship (Spring Boot + MVC +Thymeleaf)更新数据库多对一关系(Spring Boot + MVC +Thymeleaf)
【发布时间】:2017-05-30 21:43:27
【问题描述】:

我有两个实体类。一个是 PhaseEntity,另一个是 TaskEntity。 PhaseId 将是 TaskEntity 类的外键。我可以创建值并将其保存到数据库中,但无法更新数据库。 TaskEntity 类的一部分:

@ManyToOne(optional=false)
    @JoinColumn(name="phaseId")
    private PhaseEntity phaseEntity;

控制器类:

public class TaskController {
    @Autowired
    private TaskService taskService;
    @Autowired
    private PhaseService phaseService;
    @RequestMapping(value="/task/create",method=RequestMethod.GET)
    public String createForm(Model model,Principal principal){
        model.addAttribute(new TaskEntity());
        model.addAttribute("body", "task/task-create");
        model.addAttribute("generaltaskDto",new GeneralTaskDto());
        model.addAttribute("phaseEntities", phaseService.phaseList());
        return "layouts/default";

    }
@RequestMapping(value="/task/create",method=RequestMethod.POST)
    public String createFormPost(Model model,GeneralTaskDto generaltaskDto,BindingResult result){
        TaskEntity taskAndPhase=generaltaskDto.getTaskEntity();
taskAndPhase.setPhaseEntity(phaseService.getPhaseByPhaseId(generaltaskDto.getPhaseId()));
        taskService.saveTask(taskAndPhase);
        return "redirect:/task/list";
    }
@GetMapping(value="/task/update/{id}")
    public String updateTask(Model model,@PathVariable String id){
        TaskEntity taskEntity= taskService.getTaskId(Integer.parseInt(id));
        model.addAttribute("body", "task/task-create");
        model.addAttribute("phaseEntities", phaseService.phaseList());
        return "layouts/default";
        }

GeneraltaskDto 类:

 public class GeneralTaskDto {
        private TaskEntity taskEntity=new TaskEntity();
        private Integer phaseId;
        public TaskEntity getTaskEntity() {
            return taskEntity;
        }
        public void setTaskEntity(TaskEntity taskEntity) {
            this.taskEntity = taskEntity;
        }
        public Integer getPhaseId() {
            return phaseId;
        }
        public void setPhaseId(Integer phaseId) {
            this.phaseId = phaseId;
        }


}

here is the client page of the application

任何人都可以帮助请如何使用控制器请求更新数据库。提前致谢。

【问题讨论】:

    标签: spring model-view-controller thymeleaf


    【解决方案1】:

    请尝试在updateTask 方法下的控制器中将这些行添加到TaskEntity taskEntity= taskService.getTaskId(Integer.parseInt(id)); 行之后。

    PhaseEntity phaseEntity=taskEntity.getPhaseEntity();
    generaltaskDto.setTaskEntity(taskEntity);
    generaltaskDto.setPhaseId(phaseEntity.getPhaseId());
    model.addAttribute("generaltaskDto", generaltaskDto);
    

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      相关资源
      最近更新 更多