2010-04-15 3 views
28

Ho la seguente domanda sul JPA:Salvataggio ordine di una lista in APP

Posso salvare l'ordine degli elementi in una java.util.List? Nella mia applicazione l'ordine in cui inserisco gli elementi nelle liste è importante ma dopo aver ottenuto queste raccolte dal database l'ordine non è lo stesso (come previsto). Puoi mostrarmi un modo per affrontare questo problema?

P.S. Non c'è un campo nelle entità che inserisco nelle collezioni con le quali posso ordinarle.

Rosen

risposta

33

Ci sono alcuni modi hacky di fare questo in JPA 1, ma è più semplice per passare a un provider JPA 2. Il supporto per le annotazioni @OrderColumn è ciò che stai cercando. Eclipselink have an ok tutorial on how to use it.

+0

E 'questa annotazione disponibile solo in EclipseLink? In ogni caso, per quanto posso vedere, non risolverà il mio problema. Nell'esempio nel link hai dato l'ordine in cui le entità vengono aggiunte nella tabella viene salvata, non l'ordine in cui vengono soddisfatte in una raccolta. Come se fossero ordinati dagli ID delle entità "telefoniche". Non è il mio caso. P.S. Un'entità può far parte di un diverso numero di collezioni. –

+1

Non è solo parte di Eclipselink, no, fa parte delle specifiche JPA 2. Non l'ho ancora usato, ma dovrebbe conservare l'ordine della raccolta. Un altro link: http://blogs.sun.com/ldemichiel/entry/java_persistence_2_0_public – GaryF

+0

Il link a blogs.sun.com restituisce un 404. –

2

JPA dispone di 2 tipi di elenchi. In JPA1 esiste una "lista ordinata" (che è ciò che vedi, ordinamento definito da qualche clausola SQL). In JPA2 è possibile avere "elenchi ordinati" o in alternativa "elenchi indicizzati" (in cui è conservato l'ordine di creazione) ... la @OrderColumn a cui si fa riferimento. Qualsiasi implementazione di JPA2 dovrà supportare questo esempio, ad esempio DataNucleus.

JDO ha avuto liste indicizzate dal giorno 1

2

È possibile salvare l'ordine degli elementi in una java.util.List. In JPA 2.0, c'è un buon metodo per salvare l'ordine degli elementi usando l'annotazione @OrderColumn.

Per i dettagli, è possibile fare riferimento questo link Order Column (JPA 2.0)

+0

Grazie per aver pubblicato un link alla documentazione pertinente. – Spider