Nell'entità CustomerTransactions, ho il seguente campo per registrare ciò che il cliente ha acquistato:
@ManyToMany
private List<Item> listOfItemsBought;
Quando penso di più su questo campo, c'è la possibilità che non funzioni perché ai commercianti è permesso di modificare le informazioni dell'articolo (ad esempio prezzo, sconto, ecc ...). Quindi, questo campo non sarà in grado di registrare ciò che il cliente ha effettivamente acquistato al momento della transazione.
Al momento, posso solo pensare a 2 modi per farlo funzionare.
- Registrerò i dettagli della transazione in un campo String. Ritengo che in questo modo sarebbe complicato se in seguito avessi bisogno di estrarre alcune informazioni sulla transazione.
- Ogni volta che il commerciante modifica le informazioni di un articolo, non aggiornerò direttamente i campi di quell'elemento. Invece, creerò un altro nuovo oggetto con tutte le nuove informazioni e manterrò intatto il vecchio oggetto. Credo che in questo modo sia meglio perché in seguito posso facilmente estrarre informazioni sulla transazione. Tuttavia, il lato negativo è che la mia tabella degli articoli potrebbe contenere molte righe.
Sarei molto grato se qualcuno potesse darmi un consiglio su come affrontare questo problema.
UPDATE: vorrei aggiungere ulteriori informazioni sul design attuale.
public class Customer implements Serializable {
@OneToMany
private List<CustomerTransactions> listOfTransactions;
}
public class CustomerTransactions implements Serializable {
@ManyToMany
private List<Item> listOfItemsBought;
}
public class Merchant implements Serializable {
@OneToMany
private List<Item> listOfSellingItems;
}