pobranie aktualnego id listy

0

Cześć!

Od pewnego czasu robię dość spory projekt i mam pewien problem, z którym nie umiem sobie odpowiednio poradzić. Projekt zakłada ewidencje magazynową, a problem pojawia się przy tworzeniu tzw. przekazań pewnych pozycji z jednego magazynu na inny. Do tego celu stworzyłem tabele w bazie danych, która - mówiąc w wielkim skrócie - ma przechowywać m.in. id magazynu źródłowego i docelowego. O ile z identyfikatorem magazynu docelowego nie mam problemu, to problem tkwi właśnie przy id magazynu źródłowego (aktualnego, w momencie tworzenia rekordu "przekazania"). Obecnie wygląda to tak:

public void createTransmissionHistory(
			TransmissionHistory transmissionHistory, Long equipmentId,
			Long sourceMagazineId, Long destMagazineId) {
		
			Equipment equipment = equipmentDao.get(equipmentId);
		
			Magazine sourceMagazine = magazineDao.get(sourceMagazineId);
			Magazine destMagazine = magazineDao.get(destMagazineId);
					
			transmissionHistory.setEquipment(equipment);
			transmissionHistory.setSourceMagazine(sourceMagazine);
			transmissionHistory.setDestMagazine(destMagazine);
			
			transmissionHistoryDao.create(transmissionHistory);
	}

W takiej wersji to działa aczkolwiek na sztywno w parametrze wywołania tej metody muszę podać sourceMagaineId. Sam Magazyn jako typ to kolekcja, a mówiąc bardziej konkretnie - jest to Lista, która jest dostępna oczywiście z poziomu obiektu Equipment. Troche jest to zagmatwane, wiem, ale lepiej nie jestem w stanie tego wytłumaczyć. Generalnie id magazynu źródłowego pojawia się w tabeli Equipment jako podrzędna kolumna sygnalizująca gdzie dany sprzęt obecnie się znajduje. Do momentu stworzenia "przekazania" ta wartość (w tabeli Equipment) nie ma prawa się zmienić. W tym wypadku wartość, która mnie interesuje (jako sourceMagazineId) to identyfikator magazynu z tabeli Equipment i chciałbym aby był pobierany automatycznie, a nie statycznie podawany w parametrze metody tworzącej przekazanie.

Jedyne co mi przychodzi do głowy to zmodyfikowanie tej metody w taki sposób:

public void createTransmissionHistory(
			TransmissionHistory transmissionHistory, Long equipmentId, Long destMagazineId) {
		
			Equipment equipment = equipmentDao.get(equipmentId);
		
			Magazine destMagazine = magazineDao.get(destMagazineId);
					
			transmissionHistory.setEquipment(equipment);
			transmissionHistory.setSourceMagazine(equipmentDao.get(equipment).getMagazine().get(0));
			transmissionHistory.setDestMagazine(destMagazine);
			
			transmissionHistoryDao.create(transmissionHistory);
	}

Macie może jakieś pomysły?

0

Stwórz zapytanie które pobierze ci aktualny magazyn dla kartoteki. Dziwi mnie ze getMagazine to Lista idiów. Skąd wiesz który z nich jest aktualny. Albo jak określasz historie przekazań na podstawie listy idików

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