CSW-Teams / MS3

MS3 - Medical Staff Shift Scheduler is designed to schedule medical shifts of hospital employees.
5 stars 8 forks source link

Sull'aggiungere @Validant ai metodi save delle JPARepository #529

Open sebastianopriscan opened 9 months ago

sebastianopriscan commented 9 months ago

L'interfaccia JPARepository di Spring non ha una gestione molto trasparente della sessione di Hibernate che utilizza, e ciò porta ad un problema legato alla validazione delle entità che verranno salvate in persistenza: questa viene infatti effettuata dalla JPARepository, ma non ad ogni invocazione di save(), pertanto se si decide di persistere un'entità non valida ad un certo punto, e successivamente se ne persistono altre corrette, verrà restituita, in maniera non prevedibile, un'eccezione che comunica che, per salvare i dati, bisogna risolvere le inconsistenze nella sessione Hibernate che però, come detto prima, non sembra essere accessibile.

Per risolvere il problema, si suggerisce di annotare i metodi save() dei vari DAO con @Validant e il parametro che essi ricevono con @Valid (Oppure utilizzare stratagemmi più raffinati come l'ereditarietà).

Si suggerisce poi, in accopiamento al precedente intervento, di configurare Spring per non utilizzare la validazione automatica (perché altrimenti le entità verrebbero validate due volte).

In caso la soluzione non convinca, si è liberi di chiudere tale issue.

Questa issue è legata a #281