2014-01-23 23 views
0

我正在使用休眠一對多的雙向映射,同時更新記錄。在子表中新子記錄父引用變量在子表中存儲空值。請任何人幫我解決這個問題。如果它不可理解的PLZ問我,我會發布我的所有實體的有關此主題。 Plz解決了這個問題。提前致謝。在休眠狀態下使用一對多的雙向映射更新子表記錄

MY編輯代碼:

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(); 
      } 

回答

1

試試這個 ü忘記孩子設置家長參考(在for循環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); 
      }  
+0

感謝它工作正常 – Venkatesh

+0

thak你這麼多的幫助我 – Venkatesh