2013-07-12 10 views
24

Quando si tenta di utilizzare l'annotazione @Index da javax.persistence, Eclipse mi dà questo errore.L'annotazione @Index non è consentita per questa posizione

Lo sto utilizzando subito prima del campo java.util.Date, all'interno di una classe annotata con @Entity.

Prima, stavo usando org.hibernate.annotations.Index nello stesso identico luogo e andava bene.

Il problema è iniziato dopo che ho aggiornato hibernate-core da 4.1.9.Final a 4.3.0.Beta3 e hibernate-commons-annotazione s da 4.0.1-4.0.2. Dice @Index è deprecato e raccomanda lo javax.persistence.

Tutti i documenti e gli esempi che ho trovato mettono @Index prima dei membri della classe. Cosa mi manca?

risposta

36

L'annotazione APP indice può essere utilizzato solo come parte di un'altra annotazione come @Table, @SecondaryTable, ecc (vedi Vedere la sezione Anche nel javadoc):

@Table(indexes = { @Index(...) }) 
0

Se si utilizza Eclipselink è possibile aggiungere questa importare alla classe:

import org.eclipse.persistence.annotations.Index; 

Allora aggiungi la tua @Index al vostro campo come questo:

public class FooClass { 
    @Index 
    int field1; 
} 

o

@Index(columnNames = {"field1", "field2"}) 
public class FooClass {  
    int field1; 
    int field2; 
} 
+1

Penso che la domanda è di circa JPA 2.1 @Index annotazione, non un proprietario. – Piohen