我是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;
答案 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
方法应如下所示,并假设实体为Customer
和Order
以及一对多关系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;
}