2017-10-20 23 views
0

私のテーブル内のトウ列を更新する必要があります(このテーブルは従業員とジョブ履歴の2つのテーブルと結合しています)。そのうちの1つがプライマリキーですが、助けて!私がしようと、私は、データベース内のすべての仕事を探すしようとすると、ここにそれが正常に動作し、私はジュストジョブのタイトルを更新しようとした場合も、それが正常に動作しますが、場合:プライマリキースプリングブートの更新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; 
    } 

} 

私のコントローラジョブテーブルの新しいプライマリキーを設定すると、コントローラのエラーが表示されます。

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 

私はこのエラーを得た

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!"; 



    } 

は、あなたの助けをいただき、ありがとうございます。

答えて

関連する問題