Wpis z mikrobloga

Jak mogę w #spring #springboot zapobiec usuwaniu danych w bazie? Mam encje produkty i zamówienie i jak usunę produkt to wywala mi go też z zamówienia a chciałbym zabronić usuwania jak mam produkt w zamówieniu tylko teraz nie wiem czy pisać metodę co sprawdzi po prostu w zamówieniach czy ten produkt tam jest czy da się zrobić jakoś adnotacjami w encji? #java #programowanie
  • 9
@nors: jak to na wykopie bywa, zrób tak jak radzą tylko trochę odwrotnie ( ͡° ͜ʖ ͡°)
- to jest do zablokowania na poziomie SQL poprzez użycie kluczy obcych - wtedy w teorii możesz tego nie ruszać w Javie tylko wychwytuj odpowiednie exceptiony jak nie pójdzie i wytłumacz użytkownikowi w czym problem,
- triggera ani kaskady jak wyżej NIE potrzebujesz bo NIE chcesz usuwać klientom zamówień jak
@nors: Ja tylko dodam, że usuwanie produktów z bazy, to bardzo zły pomysł! Towary powinny mieć status czy są aktywne (do zamówień lub bardziej złożony system) i tym powinna być sterowana ich widoczność. Ma to znaczenie dla dokumentów historycznych (dostawy, zamówienia, faktury i wiele innych), na których występują te towary.
@michnic: też bym właśnie poszedł w tę stronę, dodanie flagi czy produkt może być w zamówieniu czy nie, później na podstawie tego można nawet sprawdzać kiedy danym projekt był objęty sprzedażą a kiedy nie, usuwanie zawsze jest passe
@PaaD Właśnie robiłem tak, że mam encje kategorie i produkt i mam relacje na kategorii onetomany do produktu a na produkcie mamy to one na kategorii i wcześniej mi rzucał wyjątek i go obsługiwałem a teraz coś zrobiłem i nie rzuca mi w ogóle wyjątków.
@michnic właśnie chyba tak zrobię bo muszą mi zostać te produkty w podsumowaniu zamówienia a na pewno to jest bezpieczniejsze
@nors: dodaj sobie flagę i sprawdzenie, najszybciej do zrobienia, tylko pamiętaj o czymś takim jak że jak zmienisz flagę to wtedy teoretycznie nie powinno być możliwości przez chwilę dodawania produktów, w sensie jak flaga jest ustawiana z true na false i w drugą stronę