Ho un nuovo requisito che per un dato User
quanti veicoli può guidare. Al momento questa informazione deve essere mostrata come un elenco di veicoli. Possono esserci diversi tipi di veicoli, ad esempio:
Utente A
Auto
- SUV 1
- Toyota RED
Moto
- Fav Yellow
- Rocker blu
E così via ...
Gli utenti sono normalmente membri della famiglia, quindi condividono i veicoli e quindi l'associazione è molti a molti per utente e veicolo e in futuro potrebbero esserci molti più tipi di veicoli quindi, per ogni veicolo di cui ho bisogno cambia la mia Entità Utente e aggiungi un'associazione per ogni tipo di veicolo che sembra male.
Frammento di esempio:
class UserEntity {
@ManyToMany()
@JoinTable(...)
Set<Car> cars = new HashSet<>();
@ManyToMany()
@JoinTable(...)
Set<Bike> bikes = new HashSet<>();
...same for each type
}
In questo momento ho creato la mia tabella di associazione user_vehicle
che contiene i seguenti tre campi:
ID | user_id | vehicle_id | VEHICLE_TYPE
L'applicazione è costruita su Spring
e sto usando Spring data JPA ma non posso definire direttamente da molti a molti l'associazione dell'utente poiché contiene la colonna extra type
nella mia tabella di associazione, quindi devo gestire manualmente le modifiche. Ad esempio, per creare un nuovo record, per prima cosa rimango l'entità principale e poi persisto questa entità figlio con l'ID dell'entità padre e lo stesso per l'aggiornamento. Questo mi sembra un accoppiamento visto che ogni nuovo sviluppatore ha bisogno di capire l'ordine corretto delle entità persistenti.
Ho la sensazione che ci sia qualche problema nell'approccio sopra, vorrei sentire dagli altri come potrebbero gestire questo requisito?