2011-09-18 10 views
9

Sto provando a creare un modo personalizzato di calcolare e trasmettere id unici che seguono il mio schema.JPA ha qualcosa di simile a "@GenericGenerator" di ibernazione per la generazione di ID personalizzati?

Hibernate ha l'annotazione @GenericGenerator che consente di mappare una classe personalizzata per calcolare un ID univoco e assegnarlo alla colonna @Id.

esempio

@Id 
    @GeneratedValue(generator="MyIdGenerator") 
    @GenericGenerator(name="MyIdGenerator", strategy="com.test.MyIdGenerator") 

Il fatto è che io non voglio usare (letargo) @GenericGenerator a livello di pacchetto. Può essere in JPA/2 "puro"?

Grazie per il vostro tempo.

risposta

14

No, non ha. Solo la possibilità senza terze parti è di assegnare valore a te stesso. Se si desidera salvare se stessi dal metodo di chiamata che imposta ID, ad esempio può essere utilizzato il callback di Prepersist.

@PrePersist 
    public void ensureId() { 
    id = ... 
    } 
+1

Soluzione molto elegante. È davvero permesso? la specifica è ambigua quando afferma: In generale, il metodo del ciclo di vita di un'applicazione portatile non deve richiamare EntityManager o eseguire operazioni di query, accedere ad altre istanze di entità o modificare le relazioni all'interno dello stesso contesto di persistenza [46] . [47] Un metodo di callback del ciclo di vita può modificare lo stato di non relazione dell'entità su cui è stato richiamato. –

Problemi correlati