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