Dopo aver letto le risposte a questa domanda e questo e questa domande correlate, ora sono confuso su come / se lavorare con un enum avere una relazione NxN.
Diciamo che ho un'entità Hotel
, un mio hotel può offrire alcuni servizi: sauna, palestra, wifi, ecc. Seguendo
You should decide whether your Platform is an entity or not. If it's an entity, it can't be an enum
Da qui e
The set of valid values is data, not code
Da qui , e se ho capito tutto correttamente, il mio approccio alla modellazione di questo con l'enum in DB deve avere una tabella hotels
, una tabella services
e una tabella di giunzione hotels_services
. La tabella dei servizi avrebbe due colonne (id, service)
o solo una (service)
. Quando si salvano le informazioni sugli hotel, la validità dei servizi sarebbe applicata non dall'applicazione ma dal DB. La mia classe Service
avrebbe quindi due campi ( Long id, String service
) o solo uno ( String service/value
). La mia Hotel
class avrebbe un List<Service> services
.
Finora, tipo di bene. Ma se la logica della mia applicazione dipende in qualche modo dal tipo di servizio, mi piacerebbe avere la sicurezza del tipo di enum. Mi sembra difficile, perché allora dovrei convertirli in un enum di ServiceEnum
, il che suona proprio sbagliato: da qualche parte avrei bisogno di fare la conversione, e lì avrei bisogno di hardcode i valori possibili, quindi la duplicità. Quindi, ho questa classe extra ServiceEnum
che confonde.
È così che dovrebbe essere? Basta rinunciare a usare un enum in questo caso? Posso conviverci, ma mi piacerebbe sapere che ho bisogno di, o che cosa fanno le persone in questi casi.