2014-10-17 2 views
1

У меня есть родительская таблица и дочерняя таблица и задано отношение OneToOne к ним ... поэтому, когда я добавляю некоторые записи в дочернюю таблицу, значение ключа для родительской таблицы (предположим, что эта таблица имеет некоторые записи уже) я хочу добавить в моем детском столе ... как я могу добиться этого с помощью hibenate .. помощь ..Как обновить значение внешнего ключа в дочерней таблице с помощью hibernate

это мой родитель боб ---

package com.valto.workflow.bean; 

import java.io.Serializable; 
import java.util.List; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name="TBL_WFProcessStatus_MST") 
public class WorkFlowProcessStatus implements Serializable { 
    private static final long serialVersionUID = -5508699872054752924L; 

    @Id @GeneratedValue(strategy=GenerationType.AUTO) 
    @Column(name="WFPStatusId") 
    private long WFPStatusId; 
    @Column(name="WFPStatusName") 
    private String WFPStatusName; 
    @Column(name="WFPStatusColor") 
    private String WFPStatusColor; 

    public long getWFPStatusId() { 
     return WFPStatusId; 
    } 
    public void setWFPStatusId(int wFPStatusId) { 
     WFPStatusId = wFPStatusId; 
    } 
    public String getWFPStatusName() { 
     return WFPStatusName; 
    } 
    public void setWFPStatusName(String wFPStatusName) { 
     WFPStatusName = wFPStatusName; 
    } 
    public String getWFPStatusColor() { 
     return WFPStatusColor; 
    } 
    public void setWFPStatusColor(String wFPStatusColor) { 
     WFPStatusColor = wFPStatusColor; 
    } 



} 

это мой ребенок класс

package com.valto.workflow.bean; 

import java.io.Serializable; 

import javax.persistence.CascadeType; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.OneToOne; 
import javax.persistence.Table; 

@Entity 
@Table(name="tbl_workflow_process_details") 
public class WorkFlowProcessDetails implements Serializable{ 
    private static final long serialVersionUID = -4355499783855489148L; 
    @Id @GeneratedValue(strategy=GenerationType.AUTO) 
    private int WFProcessId; 

    @Column(name="WFProcessDate") 
    private String WFProcessDate; 

    @Column(name="ProcessComment") 
    private String ProcessComment; 

    @OneToOne 
    @JoinColumn(name="WFPStatusId") 
    private WorkFlowProcessStatus workflowprocessstatus; 
    @OneToOne 




    public int getWFProcessId() { 
     return WFProcessId; 
    } 

    public void setWFProcessId(int wFProcessId) { 
     WFProcessId = wFProcessId; 
    } 


    public String getWFProcessDate() { 
     return WFProcessDate; 
    } 

    public void setWFProcessDate(String wFProcessDate) { 
     WFProcessDate = wFProcessDate; 
    } 

    public String getProcessComment() { 
     return ProcessComment; 
    } 

    public void setProcessComment(String processComment) { 
     ProcessComment = processComment; 
    } 

    public WorkFlowProcessStatus getWorkflowprocessstatus() { 
     return workflowprocessstatus; 
    } 

    public void setWorkflowprocessstatus(WorkFlowProcessStatus workflowprocessstatus) { 
     this.workflowprocessstatus = workflowprocessstatus; 
    } 

} 

и это мой код для сохранения записей в классе CHLD ....

public int saveWorkFlowProcessDetails(String wFProcessDate, 

     String processComment) { 
    Session sess=SessionFactoryCode.getSessionFactory().openSession(); 
    try 
    { 
      WorkFlowProcessDetails wfpd=new WorkFlowProcessDetails();//child class object 
      wfpd.setWFProcessDate(wFProcessDate); 
      wfpd.setProcessComment(processComment); 
      sess.beginTransaction(); 
      sess.save(wfpd); 
      WorkFlowProcessStatus wfps=new WorkFlowProcessStatus();//parent class object 
      wfpd.setWorkflowprocessstatus(wfps); 
      sess.update(wfpd); 
      sess.getTransaction().commit(); 


      return 1; 


    } 
    catch(QueryException ex) 
    { 
     ex.getMessage(); 
     sess.getTransaction().rollback(); 
     sess.close(); 
     return 0; 
    } 


} 

ответ

0

Вы должны каскадом workflowprocessstatus, так что это будет сохраняться, когда WorkFlowProcessDetails обновляется/сохранены.

@Entity 
@Table(name="tbl_workflow_process_details") 
public class WorkFlowProcessDetails implements Serializable{ 
private static final long serialVersionUID = -4355499783855489148L; 

... 

@OneToOne(cascade=CascadeType.ALL) 
@JoinColumn(name="WFPStatusId") 
private WorkFlowProcessStatus workflowprocessstatus; 
Смежные вопросы