Updating child table records using one to many bi-directional mapping in hibernate

StackOverflow https://stackoverflow.com/questions/21300867

  •  01-10-2022
  •  | 
  •  

Domanda

I am using hibernate one to many bi-directional mapping, While updating record. in child table for new child records parent reference variable is storing null in the child table.Please could any one help me out to solve this problem.If its not understandable plz ask me I will post all my entity's relating to this topic. Plz solve from this problem. Thanks in advance.

MY EDIT CODE:

 LibraryBookForm lb = (LibraryBookForm) form;
            int bookid = lb.getBooklistid();
            System.out.println("bookidbookidbookid" + bookid);
            String[] bar = lb.getBarcode();
            String[] accission = lb.getAccessno();
            System.out.println("accissionaccission" + bar);
            UserEntity msg;
            HttpSession session = request.getSession(false);
            msg = (UserEntity) session.getAttribute("user");
            int catid = lb.getCategory();
            Session ses = HibernateUtil.getSessionFactory().openSession();
            String d1 = lb.getBilldate();
            java.util.Date temp = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH).parse(d1);
            java.sql.Date date = new java.sql.Date(temp.getTime());
            String d2 = lb.getDateAdded();
            java.util.Date temp1 = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH).parse(d2);
            java.sql.Date submissionDate = new java.sql.Date(temp1.getTime());
            CategoryEntity ce = (CategoryEntity) ses.get(CategoryEntity.class, catid);
            LibraryBookListEntity lbl = (LibraryBookListEntity) ses.load(LibraryBookListEntity.class, bookid);

            Transaction tx = ses.beginTransaction();
            lbl.setEdition(lb.getEdition());
            lbl.setPublisher(lb.getPublisher());
            lbl.setPlace(lb.getPlace());
            lbl.setPage(lb.getPag());
            lbl.setSource(lb.getSource());
            lbl.setBillno(lb.getBillno());
            lbl.setBilldate(date);
            lbl.setPublishedyear(lb.getPublishedyear());
            lbl.setCallno(lb.getCallno());
            lbl.setIsbn(lb.getIsbn());
            lbl.setBooktitle(lb.getBooktitle());
            lbl.setRack(lb.getRack());
            lbl.setAuthor(lb.getAuthor());
            lbl.setPrice(lb.getPrice());
            lbl.setCategoryid(ce);
            lbl.setDateAdded(submissionDate);
            lbl.setTcopies(lb.getTcopies());
            lbl.setAddedBy(msg);
            lbl.setAddedate(new Date());
            lbl.setModifiedBy(null);
            lbl.setModifiedDate(null);
            try {
                java.util.List list = Arrays.asList(bar);
                Document document = new Document(new Rectangle(PageSize.A4));
                File file = new File("d://" + lb.getBooktitle() + ".pdf");
                PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(file, false));
                document.open();
                Paragraph para = new Paragraph();
                Set<LibraryBarCodeEntity> s = new HashSet<LibraryBarCodeEntity>();
                LibraryBarCodeEntity mb = null;
                for (int i = 0; i < list.size(); i++) {
                    System.out.println("inside library model edit");
                    mb = new LibraryBarCodeEntity();
                    System.out.println("bar[i]" + bar[i]);
                    System.out.println("bar[i]" + accission[i]);
                    mb.setBarCode(bar[i]);
                    mb.setAccessno(accission[i]);
                    para.add(new Phrase(new Chunk(BarcodeDao.genarateBarcode(bar[i], writer), 0, 0, true)));
                    para.add(new Phrase(Chunk.NEWLINE));
                    para.add(new Phrase(Chunk.NEWLINE));
                    s.add(mb);
                }         
                lbl.setChield(s);
                ses.update(lbl);
                tx.commit();
                document.add(para);
                document.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
È stato utile?

Soluzione

Try this U forget to set parent reference in the child (In the for loop mb.setParent(lbl);)

for (int i = 0; i < list.size(); i++) {
                System.out.println("inside library model edit");
                mb = new LibraryBarCodeEntity();
                System.out.println("bar[i]" + bar[i]);
                System.out.println("bar[i]" + accission[i]);
                mb.setBarCode(bar[i]);
                mb.setAccessno(accission[i]);
                para.add(new Phrase(new Chunk(BarcodeDao.genarateBarcode(bar[i], writer), 0, 0, true)));
                para.add(new Phrase(Chunk.NEWLINE));
                para.add(new Phrase(Chunk.NEWLINE));
                mb.setParent(lbl);
                s.add(mb);
            }     
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top