Witam mam takie pytanie jak iteracyjnie przejść po kolekcji która zawiera kolekcje.
Już objaśniam mam encje menu:

public class menu {

	public int id ; 

	@JoinColumn(name = "ID", referencedColumnName = "PARENT_ID")
	@OneToMany(cascade = CascadeType.ALL, mappedBy = "parentId")
	public List<Menu> menuItems;   --wszystkie jego submenu jednak te submenu mogą także zawierać inne submenu

	@JoinColumn(name = "PARENT_ID", referencedColumnName = "ID")
	@ManyToOne(cascade = { CascadeType.MERGE, CascadeType.REFRESH })
	public Menu parentMenu;   

	@OneToMany(cascade = CascadeType.ALL, mappedBy = "menuId")
	private List<MenuPage> pubMenuPageCollection;    ---kolekcja MenuPage

	public boolean softdel;
	......
	setters oraz getters
}

Natomiast moja encja MenuPage jest następująca:

public class MenuPage {

	private id; 

	@JoinColumn(name = "MENU_ID", referencedColumnName = "ID")
	@ManyToOne
	private Menu menuId;

	@JoinColumn(name = "PAGE_ID", referencedColumnName = "ID")
	@ManyToOne
	private Page pageId;
	
	private boolean softdel;

	......	setters and getters
}

Oraz encje Page:

pubic class Page {
	
	private int id; 

	@OneToMany(cascade = CascadeType.ALL, mappedBy = "pageId")
	private final List<MenuPage> pubMenuPages;

	private boolean softdel; 
}

Mam więc duży problem ponieważ muszę poustawiać wszędzie softdel = true. Jeśli wybiorę dane menu to wszystkie jego sub menu czyli obiekty w kolekcji oraz elementy MenuPage i Page mają mieć ustawione softdel = true.

Ogólnie myślałem nad zapytaniem natywnym jednak problem polega na tym, że zapytanie musiałoby działać zarówno pod postgresql oraz oracle czyli jestem w dupie bo o ile w postgresql udało mi się napisać 1 zapytanie które zrobi update to jednak nie da rady odpalić tego w oracle choćby z tego względu że tam softdel nie jest TRUE/FALSE tylko 1/0 . Czyli operacje ustawiania softdela muszę zrobić na encjach. Nie mogę wpaść na pomysł jak fajnie i sprawnie takie coś wykonać :/

Na dodatek wszystkiego musi to dzialać na toplinku :P