2013-11-18 4 views
0

Я новичок в hibernate.i есть 2 двух стола один - это работа, а другая - работа. но когда я вставляю данные в базу данных, используя jsp form.all, данные идут правильно, но идентификатор jobID null Я знаю его просто, но я не знаю, как его решить. пожалуйста, помогите мнеhibernate joins не работает

код в классе работы:

@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

Что аннотаций вы подаете заявление на JobId? – Masudul

+0

Одна вещь, которую я хочу поделиться с u jobId, генерируется автоматически в таблице job.and его work fine.but jobid имеет значение null в таблице jobskill. и я использую аннотацию на jobid @Id – user2995508

+0

Пожалуйста, покажите код Java, в котором вы устанавливаете значения bean для сохранения. – pikrut

ответ

0

Я действительно думаю, проблема с вашим Set Accessor методами метод i..e набора в обоих 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 и один-ко-многим б/ш них.

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; 
} 
+0

Я сделал то же самое, что и сказал мне, и я изменил метод setskill setter. Но опять jobId имеет значение null в таблице jobskill – user2995508

+0

Можете ли вы обновить свой вопрос с помощью последнего кода :), чтобы мы могли посмотреть. Если возможно, попробуйте ввести код, как вы сохраняете – Jayasagar

Смежные вопросы