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()));
}
}
}
「*程序也崩潰*」既不是有效的Java異常,也不是一個有效的Postgres的錯誤消息。發佈***確切***錯誤消息,你會得到(包括堆棧跟蹤) –
應用程序如何崩潰?你有什麼例外? –