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.
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 dallaJPARepository
, ma non ad ogni invocazione disave()
, 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 variDAO
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