Domanda

Ho impostato la proprietà della mia entità

@GeneratedValue
Long id;

e sono in grado di generare un ID per l'entità nel database. La mia domanda è: perché tutte le entità condividono lo stesso numero incrementale? ogni tabella non dovrebbe iniziare a contare da zero?

È stato utile?

Soluzione

Dipende dal database sottostante. GenerationType è AUTO per impostazione predefinita e Hibernate sceglie una delle tre varianti a seconda del database. Se vuoi usarne uno in particolare, impostalo come attributo di @GeneratedValue

Altri suggerimenti

Questo dipende dal database. Le implementazioni JPA utilizzano generatori di ID diversi a seconda del sistema di database che stanno utilizzando. Ad esempio, con Oracle, verrà creata una singola sequenza e tale sequenza verrà utilizzata per generare ID per tutti i tipi di entità. Per impostazione predefinita, non creerà una sequenza per ogni entità, poiché di solito non c'è motivo di farlo. La stessa logica si applica ad altri sistemi di database che utilizzano sequenze anziché colonne con incremento automatico.

Non sono sicuro al 100% se l'API JPA ti consente di modificare questo comportamento, ma so che le annotazioni di Hibernate lo fanno. Tuttavia, non ci hai comunicato quale database stai utilizzando o quale implementazione JPA stai utilizzando, quindi non posso darti molti più consigli di così.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top