我正在为客户开发Java应用程序。我有一个21列的postgresql表(档案)。在我的一个函数中,我必须在数据库中保存13行,每行21列。我只使用一个hibernate会话来做它;如果不是该程序也崩溃。数据库保存了13行但它崩溃了,我不知道我是否要求太多,但我不知道另一种方法。 如果不是应用程序完美运行,这是唯一的问题。
以下是代码:
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()));
}
}
}
答案 0 :(得分:0)
它解决了,而不是while(无限的boucle)我不得不放一个if ifs all。
感谢