Ho un'entità che è stata precedentemente persa e ha una relazione @OneToMany
con un'altra entità. Per aggiungere una nuova entità, aggiungo la mia nuova entità nell'oggetto gestito e utilizzo cascadeType.ALL
per mantenere le modifiche. C'è un modo per ottenere gli id degli oggetti appena creati o ottenere l'oggetto originale (non gestito) che ho usato con l'unione per avere il suo id aggiornato?JPA Come posso ottenere l'id/oggetto generato quando si usa l'unione da padre ma viene creato un figlio?
In pseudo-codice che ci si aspetta quanto segue per accadere:
- Nuova copia sta per essere restituito per entità risultante dalla fusione
- vecchia copia sarà aggiornamento per le nuove entità
Esempio: Parent a, id = 13 Bambino B, id = 0
In sostanza, voglio emettere un merge
sul genitore, ma a cascata persist
sul figlio (in modo che l'istanza figlio originale sia aggiornata, non copiata).
Ovviamente questo non accade. Sto utilizzando la sospensione come provider.
Quale database, provider JPA e strategia di generazione id stai usando? Con Oracle 11g + Hibernate + '@ SequenceGenerator' gli oggetti si sovrappongono perfettamente e ritorna con il nuovo ID assegnato. –
Sto usando MySql e '@ GeneratedValue'. Non sono un fan degli id aggregati che ritengo sia il motivo per cui funziona per Oracle/'SequenceGenerator' –
@johnd Ho apportato delle modifiche alla domanda nel tentativo di chiarire; se ho frainteso, per favore, rispondi alle mie modifiche. –