Ho un'istanza di entità JPA nel livello dell'interfaccia utente Web della mia applicazione. Mi piacerebbe sapere in qualsiasi momento se questa entità è già stata conservata nel database o se è presente solo nella sessione utente.Come sapere se un'entità JPA separata è già stata mantenuta o meno?
Sarebbe nel livello aziendale, userei il metodo entitymanager.contains (Entity), ma nel mio livello UI penso di aver bisogno di un attributo extra che indica se l'entità è stata salvata o meno. Come lo implementa? Sto considerando la seguente opzione per il momento:
- un attributo JPA con un valore predefinito impostato dal database, ma imporrà una nuova lettura dopo ogni aggiornamento?
- un attributo non JPA impostato manualmente nel mio codice o impostato automaticamente da JPA?
Qualche consiglio/altri suggerimenti?
Utilizzo JPA 1 con implementazione Hibernate 3.2 e preferirei attenermi allo standard.
Assolutamente, voglio sapere se il mio soggetto è nuovo.Preferirei utilizzare un altro campo con un valore predefinito impostato nel database poiché non sto utilizzando una strategia JPA GeneratedValue per la chiave primaria (mi sto impostando la chiave primaria con un UUID per il fornitore di database incrociato/implementazione jpa/compatibilità di clustering). – snowflake
@snowflake Il problema è che JPA non supporta i valori generati dal database per gli attributi non pk, quindi dovrai usare un'estensione del provider JPA (come '@ org.hibernate.annotations.Generated') o aggiornare le tue entità dopo la permanenza , che è brutto. Mi chiedo se usare '@ GeneratedValue' non sarebbe una scelta migliore. –
Grazie per il tuo commento. Hai ragione, questo è brutto, preferirei usare come alternativa un campo impostato e dal mio DAO. – snowflake