2012-01-10 3 views
5

mio codice di esempio:
In JPA posso accedere al campo creato da @OrderColumn nell'entità raccolta?

 
public class A { 

    @OneToMany 
    @OrderColumn(name = "ORDER") 
    private List<B> bList; 
    ... 
} 

public class B { 

    @Column(name = "ORDER") 
    private Integer order; // I need this field because I want 
         // to use the ordering field in my query. 
    ... 
} 

Con questo codice EclipseLink cercare di creare la colonna "ORDINE" 2 volte gettando un'eccezione e non creare la tabella B.

Grazie.

+0

perché non definisce * come * che si desidera utilizzare l'ordinamento in una query – DataNucleus

+0

semplicemente in questo modo: SELECT b da B B dove ... ordina per – devmao

+0

in modo da fare come diceva James ... uso "ORDINA PER INDICE (lista)" – DataNucleus

risposta

2

Si prega di registrare un bug per questo problema su EclipseLink.

Non è necessario disporre della colonna solo per l'interrogazione, è possibile utilizzare l'INDICE JPQL (bList) per interrogare la colonna dell'ordine.

In EclipseLink è anche possibile utilizzare un DescriptorCustomizer per definire un QueryKey per qualsiasi colonna per consentire l'esecuzione di query su di esso.

+0

ok ma non è possibile usarlo nella sezione "ordine per" query – devmao

1

Utilizzare @OrderBy anziché @OrderColumn. Guardate riferimento http://docs.oracle.com/javaee/6/api/javax/persistence/OrderColumn.html

+0

Perché dovrebbe farlo se voleva una lista indicizzata, piuttosto che una lista ordinata? Sono concetti diversi, con uno che conserva l'ordine in cui gli elementi sono stati aggiunti alla lista e l'altro che impone un ordine basato su query su di essi – DataNucleus

Problemi correlati