Quote Originariamente inviata da andbin Visualizza il messaggio
Il punto è che la lista dei prodotti ha il FetchType.LAZY. Pertanto puoi accedere alla lista solo nell'arco di tempo in cui il persistence context è attivo.
Se hai fatto un service con un metodo con @Transactional(readOnly=true) per leggere i fornitori, il persistence context è attivo solo lì dentro. Se l'accesso alla lista dei prodotti è fatto SOLO ad un livello più alto (controller/vista), il ORM non applica la lettura in modo lazy perché sei fuori dal persistence context.

La soluzione banale: fai un get della lista nel metodo del service, questo fa attivare il meccanismo lazy della lettura.

Un'altra soluzione più architetturale è quella di NON esporre mai gli oggetti delle entity al controller/vista ma fornire degli oggetto DTO di passaggio che sono eventualmente più focalizzati sul modello della vista.

Non capisco perché non viene create la tabella prodotti in fornitori...:

codice:
  
mysql> select * from fornitori;
+----+-------------+
| id | descrizione|
+----+-------------+
|  1 | FornitoreX  |
|  2 | FornitoreX  |
|  3 | FornitoreX  |
|  4 | FornitoreX  |
|  5 | FornitoreX  |
+----+-------------+
5 rows in set (0,00 sec)