2017-10-20 182 views
0

我需要更新我的表内部的两列(Job此表与其他两个表员工和工作历史联合)其中一个是主键,但我得到错误,如果有人可以帮帮我!更新主键弹簧引导jpa

package com.touati.org.model; 
import java.io.Serializable; 
import javax.persistence.*; 
import java.math.BigDecimal; 
import java.util.List; 


/** 
* The persistent class for the jobs database table. 
* 
*/ 
@Entity 
@Table(name="jobs") 
@NamedQuery(name="Job.findAll", query="SELECT j FROM Job j") 
public class Job implements Serializable { 
    private static final long serialVersionUID = 1L; 

    @Id 
    @Column(name="JOB_ID") 
    private String jobId; 

    @Column(name="JOB_TITLE") 
    private String jobTitle; 

    @Column(name="MAX_SALARY") 
    private BigDecimal maxSalary; 

    @Column(name="MIN_SALARY") 
    private BigDecimal minSalary; 

    //bi-directional many-to-one association to Employee 
    @OneToMany(mappedBy="job") 
    private List<Employee> employees; 

    //bi-directional many-to-one association to JobHistory 
    @OneToMany(mappedBy="job") 
    private List<JobHistory> jobHistories; 

    public Job() { 
    } 

    public String getJobId() { 
     return this.jobId; 
    } 

    public void setJobId(String jobId) { 
     this.jobId = jobId; 
    } 

    public String getJobTitle() { 
     return this.jobTitle; 
    } 

    public void setJobTitle(String jobTitle) { 
     this.jobTitle = jobTitle; 
    } 

    public BigDecimal getMaxSalary() { 
     return this.maxSalary; 
    } 

    public void setMaxSalary(BigDecimal maxSalary) { 
     this.maxSalary = maxSalary; 
    } 

    public BigDecimal getMinSalary() { 
     return this.minSalary; 
    } 

    public void setMinSalary(BigDecimal minSalary) { 
     this.minSalary = minSalary; 
    } 

    public List<Employee> getEmployees() { 
     return this.employees; 
    } 

    public void setEmployees(List<Employee> employees) { 
     this.employees = employees; 
    } 

    public Employee addEmployee(Employee employee) { 
     getEmployees().add(employee); 
     employee.setJob(this); 

     return employee; 
    } 

    public Employee removeEmployee(Employee employee) { 
     getEmployees().remove(employee); 
     employee.setJob(null); 

     return employee; 
    } 

    public List<JobHistory> getJobHistories() { 
     return this.jobHistories; 
    } 

    public void setJobHistories(List<JobHistory> jobHistories) { 
     this.jobHistories = jobHistories; 
    } 

    public JobHistory addJobHistory(JobHistory jobHistory) { 
     getJobHistories().add(jobHistory); 
     jobHistory.setJob(this); 

     return jobHistory; 
    } 

    public JobHistory removeJobHistory(JobHistory jobHistory) { 
     getJobHistories().remove(jobHistory); 
     jobHistory.setJob(null); 

     return jobHistory; 
    } 

} 

我的控制器:这里的时候,我试图寻找在数据库能正常工作,另外,如果我尝试中庸之道更新它工作正常作业的标题,但如果我尝试将所有的工作为作业表设置一个新的主键,它给了我错误在这里我的控制器。

package com.touati.org.model; 

import java.io.IOException; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.GetMapping; 
import org.springframework.web.bind.annotation.PathVariable; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ResponseBody; 
import org.springframework.web.bind.annotation.ResponseStatus; 







@Controller // This means that this class is a Controller 
@RequestMapping(path="/project") // This means URL's start with /demo (after Application path) 
public class MainController { 



    @GetMapping(path="/job") 
    public @ResponseBody Iterable<Job> getAllJob() { 
     // This returns a JSON or XML with the users 
     return jobRepository.findAll(); 
    } 




    @GetMapping(path="/job/{jobId}") 
    public @ResponseBody String getJob(@PathVariable String jobId) { 
     Job job = jobRepository.findOne(jobId); 

     try { 
     job.setJobTitle("manager"); 
     job.setJobId("test1"); 
     jobRepository.save(job); 
     } 
     catch (Exception ex) { 
      return "Error updating the job: " + ex.toString(); 
     } 
     return "Job succesfully updated!"; 



    } 

我得到这个错误,

Error updating the user: org.springframework.orm.jpa.JpaSystemException: identifier of an instance of com.touati.org.model.Job was altered from test to test1; nested exception is org.hibernate.HibernateException: identifier of an instance of com.touati.org.model.Job was altered from test to test1 

谢谢您的帮助。

回答