Save child objects automatically using JPA Hibernate

前端 未结 7 703
南方客
南方客 2020-11-27 13:13

I have a one-to-many relation between Parent and Child table. In the parent object I have a

List setChildren(List childs)
         


        
7条回答
  •  一向
    一向 (楼主)
    2020-11-27 13:59

    Following program describe how bidirectional relation work in hibernate.

    When parent will save its list of child object will be auto save.

    On Parent side:

        @Entity
        @Table(name="clients")
        public class Clients implements Serializable  {
    
             @Id
             @GeneratedValue(strategy = GenerationType.IDENTITY)     
             @OneToMany(mappedBy="clients", cascade=CascadeType.ALL)
              List smsNumbers;
        }
    

    And put the following annotation on the child side:

      @Entity
      @Table(name="smsnumbers")
      public class SmsNumbers implements Serializable {
    
         @Id
         @GeneratedValue(strategy = GenerationType.IDENTITY)
         int id;
         String number;
         String status;
         Date reg_date;
         @ManyToOne
         @JoinColumn(name = "client_id")
         private Clients clients;
    
        // and getter setter.
    
     }
    

    Main class:

     public static void main(String arr[])
     {
        Session session = HibernateUtil.openSession();
          //getting transaction object from session object
        session.beginTransaction();
    
        Clients cl=new Clients("Murali", "1010101010");
        SmsNumbers sms1=new SmsNumbers("99999", "Active", cl);
        SmsNumbers sms2=new SmsNumbers("88888", "InActive", cl);
        SmsNumbers sms3=new SmsNumbers("77777", "Active", cl);
        List lstSmsNumbers=new ArrayList();
        lstSmsNumbers.add(sms1);
        lstSmsNumbers.add(sms2);
        lstSmsNumbers.add(sms3);
        cl.setSmsNumbers(lstSmsNumbers);
        session.saveOrUpdate(cl);
        session.getTransaction().commit(); 
        session.close();    
    
     }
    

提交回复
热议问题