Hibernate modyfikacja danych

0

Mam problem na, który natknąłem się gdy zacząłem bazę zaopatrywać w metody modyfikujące już istniejące tabele.
Np Wczytuje sobie obiekt i do niego coś dodaję do kolejki albo modyfikuję jakąś daną i daję session.saveOrUpdates()
Ale nie działa. Przy zapisie istniejących nie ma problemu i sądziłem zawsze że modyfikacja jest analogiczna ale się zdziwiłem gdy okazało się ze nie działa i nie mam jakoś pomysłu jak to powinno być inaczej. Będę wdzięczny za info. W necie główie jest o pierwszym zapisaniu. Jednak jeszcze będę szukał.
Za każdą odp będę wdzięczny

0

Podam kawałek kodu:

public static Osoba wczytajOsobe(long id){		
		Osoba o = new Osoba();
		Transaction tx = null;
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		try {

			tx = session.beginTransaction();

			o = (Osoba) session.load(Osoba.class,(long)id, LockMode.UPGRADE);
			
			tx.commit();
			
			return o;
		} catch (RuntimeException e) {
			if (tx != null && tx.isActive()) {
				try {
					tx.rollback();
				} catch (HibernateException e1) {
					logger.debug("Error rolling back transaction");
				}
				throw e;
			}
		}
		return o;		
	} 

Tą metodą chcę zwracać obiekt który będę mógł modygikować
W poniższej metodzie coś modyfikuję i zapisuję. Jednak modyfikacja nie następuję. Błędne jest pewnie podejście jednak nie mam pomysłu jak inaczej to rozwiązac

private static void add() {
		Transaction tx = null;
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		try {
			tx = session.beginTransaction();
			Osoba os = wczytajOsobe(1111);
			System.out.println("id to "+os.getIdentyfikator());
			Kredyt kr = new Kredyt("346788888888768", 324, 453, 3, 453, os);
			os.setPojedynczyRachunek(kr, "kr");
			kr.setWlasciciel(os);
			
			session.save(os);
			session.save(kr);
			session.flush();
			
			session.refresh(os);
			tx.commit();
                    } catch (RuntimeException e) {
			if (tx != null && tx.isActive()) {
				try {
					tx.rollback();
				} catch (HibernateException e1) {
					logger.debug("Error rolling back transaction");
				}
				throw e;
			}
		}
		
	} 

Do obiektu osoba dodaję obiekt kredyt. Jest to powiązanie 1 do wielu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1