2015-06-10 48 views
0

我正在爲客戶端開發Java應用程序。我有一個21列的postgresql表(卷宗)。在我的一個功能中,我必須在數據庫中保存13行,每行21列。我只用一個hibernate會話來完成它;如果不是該程序也崩潰。數據庫保存了13行,但它崩潰了,我不知道我是否問得太多,但我不知道另一種方式。 如果不是應用程序完美工作,這是唯一的問題。更新數據庫時Java程序崩潰(休眠)

下面是代碼:

private void CreeretchargerAR(String NumDossier) throws Exception{ 
    //CREATION DU DOSSIER 
    //start 
    Session session1= HibernateUtil.getSessionFactory().openSession(); 
    Transaction tx1 = session.beginTransaction(); 
    DossierArAs dossier = new DossierArAs(); 
    DossierArAsId iddos = new DossierArAsId(); 

    iddos.setMatricule(LabelMatricule.getText()); 
    iddos.setCode(labelCode.getText()); 
    iddos.setHorodatage(control.Horodatage()); 
    iddos.setDateDebutDemande(control 
      .DateLabelSWTToDatePostgres(labelDateDebDemande 
        .getText())); 
    iddos.setTypeAttestation(labeltypeatt.getText()); 
    iddos.setNumdossier(NumDossier); 
    dossier.setDateDebut(control 
      .DateLabelSWTToDatePostgres(labeldateDeb 
        .getText())); 
    dossier.setDateFinDemande(OperationsDate.DateOracleToDatePostgres("29991231")); 
    dossier.setDateFin(control 
      .DateLabelSWTToDatePostgres(labeldateFin 
        .getText())); 
    dossier.setMatriculegestionnaire(MatriculeGestionnaire); 
    dossier.setMatriculegestionnaire(MatriculeGestionnaire); 
    dossier.setStatut("E"); 
    dossier.setDateAccident(control 
      .DateLabelSWTToDatePostgres(labelDateAccident.getText())); 

    String date1 = null; 
    //float sommenet = 0f; 
    float sommebrut = 0f; 
    float sommesft = 0f; 

    float sft = 0f; 
    float mois13 = 0f; 
    float asl = 0f; 

    //String DateDebutOracle = control.JavaUtilDateToStringASAR(labeldateDeb.getText()); 
    String dateasa = control.JavaUtilDateToStringASAR(labeldateDeb.getText()); 
    String DateDebutOracle = Salaire_DAO.moismoins1(dateasa); 
    System.out.println(DateDebutOracle); 

    iddos.setPerpaie(Salaire_DAO.recupperpaiARAS(DateDebutOracle)); 
    dossier.setId(iddos); 

    asl = (Salaire_DAO.RecupSalaire(DateDebutOracle, 
      LabelMatricule.getText(), rubrique.asl)== null) ? 0f:Float.parseFloat(Salaire_DAO.RecupSalaire(DateDebutOracle, 
        LabelMatricule.getText(), rubrique.asl)); 
    dossier.setSalairebrut(asl); 
    System.out.println(asl); 

    sft = (Salaire_DAO.RecupSalaire(DateDebutOracle, LabelMatricule.getText(), rubrique.sft)== null) ? 0f: 
     Float.parseFloat(Salaire_DAO.RecupSalaire(DateDebutOracle, LabelMatricule.getText(), rubrique.sft)); 
    dossier.setSft(sft); 
    System.out.println(sft); 

    sommebrut = asl; 
    sommesft = sft; 

    date1 = Salaire_DAO.moismoins1(DateDebutOracle); 
    System.out.println(date1); 
    System.out.println(sommebrut); 

    session1.saveOrUpdate(dossier); 
    session1.flush(); 
    session1.clear(); 


    //CREATION DES 12 LIGNES POUR CHAQUE perpaie 

    for (int i = 1; i<12; i++){ 
      iddos.setPerpaie(Salaire_DAO.recupperpaiARAS(date1)); 
      dossier.setId(iddos); 

      asl = (Salaire_DAO.RecupSalaire(date1, 
        LabelMatricule.getText(), rubrique.asl)== null) ? 
        0f:Float.parseFloat(Salaire_DAO.RecupSalaire(date1, LabelMatricule.getText(), rubrique.asl)); 
      dossier.setSalairebrut(asl); 
      System.out.println(asl); 


      sft = (Salaire_DAO.RecupSalaire(date1, LabelMatricule.getText(), rubrique.sft)== null) ? 0f: 
       Float.parseFloat(Salaire_DAO.RecupSalaire(date1, LabelMatricule.getText(), rubrique.sft)); 
      dossier.setSft(sft); 
      System.out.println(sft); 


      sommebrut = sommebrut + asl; 
      sommesft = sommesft + sft; 

      date1 = Salaire_DAO.moismoins1(date1); 
      System.out.println(date1); 


     System.out.println(sommebrut); 
     session1.saveOrUpdate(dossier); 
     session1.flush(); 
     session1.clear(); 
     //i++; 
    } 

     iddos.setPerpaie("TOTAL"); 
     dossier.setId(iddos); 
     System.out.println(dossier.getId().getPerpaie()); 
     dossier.setSalairebrut(Float.parseFloat(String.valueOf(sommebrut))); 
     dossier.setSft(Float.parseFloat(String.valueOf(sommesft))); 
     mois13 = sommebrut/12; 
     dossier.setMois13(Float.parseFloat(String.valueOf(mois13))); 

     session1.saveOrUpdate(dossier); 
     //session1.getTransaction().commit(); 
     session1.flush(); 
     if (!tx1.wasCommitted()){ 
      tx1.commit(); 
      session1.close(); 
     } 
     //FIN CREATION DU DOSSIER 

     //AFFICHAGE DES DONNES 

     btn_D_Valider.setVisible(true); 
     btn_D_Valider.setEnabled(true); 
     grpmeMois13.setVisible(true); 
     grpmeSalaireTotal.setVisible(true); 
     grpCongsAnnuels.setVisible(true); 
     group_2.setVisible(true); 
     btn_D_EditerLaDemande.setVisible(true); 
     btn_D_EditerLaDemande.setEnabled(true); 
     btnEditerLeDossier.setEnabled(false); 

     text_mois13.setText(String.valueOf(mois13)); 
     sommeSalaire.setText(String.valueOf(sommebrut)); 

     Iterator<DossierArAs> it = dossierARAS_DAO.Recuperer12Periodes(NumDossier); 
     while (it.hasNext()){ 
     DossierArAs ds = it.next(); 
      while (!ds.getId().getPerpaie().equals("TOTAL")){ 
        TableItem ligne1 = new TableItem(table_SFT, SWT.NONE); 
        ligne1.setText(0, ds.getId().getPerpaie()); 
        ligne1.setText(1, String.valueOf (ds.getSft())); 
       } 
     } 

} 
+5

「*程序也崩潰*」既不是有效的Java異常,也不是一個有效的Postgres的錯誤消息。發佈***確切***錯誤消息,你會得到(包括堆棧跟蹤) –

+1

應用程序如何崩潰?你有什麼例外? –

回答

0

也就迎刃而解了,而不是一段時間(無限仿羔皮呢)我有,如果多數民衆贊成放一個。

感謝