hallo,
ich versuche derzeit eine speichern/laden funktion für ein Eclipse EMF projekt mit hilfe von Teneo/Hibernate zu implementieren, hab aber das eine oder andere problem damit.
an sich funktioniert speichern sowie laden, solange man nicht versucht das selbe modell zwei mal zu speichern bzw es zu aktualisieren.
sprich,
modell erzeugen, speichern, modell erzeugen, speichern, ... -> lade klappt
modell erzeugen, speichern, speichern -> klappt nicht
laden -> speichern -> klappt nicht
ich hoff das ist ein ganz einfacher fehler und ich bin nur zu blöd ihn zu sehen
danke schön für die geduld
Hibernate version: 3.2.6
Name and version of the database: HSQLDB 1.8.0.9
Code:
die save method:
die load method:
ich versuche derzeit eine speichern/laden funktion für ein Eclipse EMF projekt mit hilfe von Teneo/Hibernate zu implementieren, hab aber das eine oder andere problem damit.
an sich funktioniert speichern sowie laden, solange man nicht versucht das selbe modell zwei mal zu speichern bzw es zu aktualisieren.
sprich,
modell erzeugen, speichern, modell erzeugen, speichern, ... -> lade klappt
modell erzeugen, speichern, speichern -> klappt nicht
laden -> speichern -> klappt nicht
ich hoff das ist ein ganz einfacher fehler und ich bin nur zu blöd ihn zu sehen
danke schön für die geduld
Hibernate version: 3.2.6
Name and version of the database: HSQLDB 1.8.0.9
Code:
die save method:
Code:
public static boolean doSaveToDB(String fileName, HbDataStore hbds) { if (!session.isOpen()) { session = sessionFactory.openSession(); session.setFlushMode(FlushMode.MANUAL); tx = session.getTransaction(); } tx.begin(); try { session.saveOrUpdate(editingDomain.getResourceSet().getResources().get(0).getContents().get(0)); } catch (HibernateException e) { e.printStackTrace(); } session.flush(); tx.commit(); if (session.isOpen()) { session.clear(); session.close(); } return true; }
die load method:
Code:
public static Modell loadExistingModellFromDB(String fileName, HbDataStore hbds) { if (!session.isOpen()) { session = sessionFactory.openSession(); session.setFlushMode(FlushMode.MANUAL); tx = session.getTransaction(); } URI resourceURI = URI.createURI("hbxml://?dsname=" + fileName); Modell model = null; tx.begin(); try { try { editingDomain.getResourceSet().getResources().get(0).load(Collections.EMPTY_MAP); } catch (IOException e) { e.printStackTrace(); } BigInteger fileID = new BigInteger(fileName); BigInteger ID = null; try { for (int i = 0; !fileID.equals(ID) || (fileID.compareTo(ID) < 0) ; i++) { editingDomain.getResourceSet().getResources().clear(); editingDomain.getResourceSet().createResource(resourceURI); editingDomain.getResourceSet().getResource(resourceURI, true); model = (Modell) editingDomain.getResourceSet().getResources().get(0).getContents().get(i); List models = session.createSQLQuery("SELECT E_ID FROM \"modell\"").list(); ID = (BigInteger) models.get(i); } } catch (RuntimeException e) { System.err.println("No entry found!"); } } catch (HibernateException e) { e.printStackTrace(); } catch (RuntimeException re) { re.printStackTrace(); } session.flush(); tx.commit(); if (session.isOpen()) { try { session.clear(); session.close(); } catch (HibernateException e) { System.err.println("Session closing failed"); e.printStackTrace(); } } return model; }
Comment