hibernate加入不起作用

时间:2013-11-18 05:30:58

标签: java sql spring hibernate

我是hibernate.i的新手,有两个表,一个是作业,另一个是jobSkills。但是当我使用jsp form将数据插入数据库时​​,所有数据都正常,但jobID为null 我知道它很简单,但我不知道如何解决它。 请帮帮我

工作班中的代码:

@OneToMany(mappedBy="job",cascade = CascadeType.ALL)
private List <JobSkill> jobSkill;

 public List<JobSkill> getJobSkill() {
 return jobwalkintime;
 }


  public void setJobSkill(List<JobSkill> jobSkill) {
   this.jobSkill = jobSkill;
   }
JobSkill类中的

代码:

  @ManyToOne
  @JoinColumn(name = "JobId")
  private Job job;

1 个答案:

答案 0 :(得分:0)

我真的猜测问题是你的Set Accessor方法我在JobSkill和Job中设置方法。更改您的setJobSkill方法,如下所示

@OneToMany(mappedBy="job",cascade = CascadeType.ALL)
private List <JobSkill> jobSkill = new ArrayList<JobSkill>();

public List<JobSkill> getJobSkill() {
 return jobwalkintime;
}
public void setJobSkill(List<JobSkill> jobSkill) {
 if (jobSkill != null ) {
   for (JobSkill js : jobSkill) {
   js.setJob(this);
 }
 this.jobSkill = jobSkill;
}

在JPA世界中,JobSkill将成为关系的所有者,因此您需要在每个Job上设置JobSkill个实例,以便与他们建立关系。

一般情况下,对于双向一对多双向关系,Accessor方法应如下所示,并假设实体为CustomerOrder以及一对多关系b / w他们。

<强> Customer.java

public Collection<Order> getOrders() {
    return Collections.unmodifiableCollection(orders);
}

public void addToOrders(Order value) {
    if (!orders.contains(value)) {
        orders.add(value);
        value.setCustomer(this);
    }
}

public void removeFromOrders(Order value) {
    if (orders.remove(value)) {
        value.setCustomer(null);
    }
}

<强> Order.java

public void setCustomer(Customer value) {
    if (this.customer != value) {
        if (this.customer != null) {
            this.customer.removeFromOrders(this);
        }
        this.customer = value;
        if (value != null) {
            value.addToOrders(this);
        }
    }
}

public Customer getCustomer() {
    return customer;
}