Prima i fatti di base: webapp Java, Spring, Hibernate, MySQL.Implementazione di una cronologia dei dati/soluzione di versionamento per un'applicazione basata su Hibernate (con una torsione)
La situazione è che ho un modello di oggetto complesso di ad es. a Car. È composto da molti oggetti (Motore, Pneumatici, ...) con relazioni molti-a-uno e uno-a-molti tra loro.
Ora ci sono molte macchine e ogni tanto qualcuno ispeziona un'auto e crea un rapporto dell'ispezione. Il rapporto fa riferimento alle molte parti che l'auto, mostrando le loro proprietà ecc.
Finora il sistema non ha supportato la possibilità di aggiornare le proprietà dell'auto e delle sue parti una volta che sono state inserite nel sistema. Significa che se un colore del telaio o il numero di pneumatici sono stati cambiati, i vecchi rapporti rifletterebbero questo cambiamento che non è quello che vogliamo.
Bene, ora questa funzione è stata richiesta. Le auto e le loro parti devono essere modificabili e deve essere creata una cronologia delle versioni. I vecchi report devono fare riferimento alle vecchie versioni delle parti e ai loro valori.
Ho guardato "Slowly changing dimensions" e sembra che la versione della macchina e le sue parti potrebbero essere fatte con l'approccio di tipo 6.
La cosa (la torsione) che sto avendo problemi a capire (probabilmente a causa della mia esperienza limitata Hibernate) è questo:
Come posso montare le mie istanze report con Hibernate in modo che essi si riferiscono al versioni corrette di ogni parte dell'auto? I report hanno una data e ogni versione delle parti di auto avrebbe intervalli di date quando erano validi, quindi credo che potrei farlo con alcuni HQL/SQL complessi. Ma c'è un modo più semplice e automatico di farlo con Hibernate?
Questo è stato praticamente l'approccio che abbiamo preso. – Janne