The JPA Index annotation can only be used as part of another annotation like @Table
, @SecondaryTable
, etc. (see the See Also section in the javadoc):
@Table(indexes = { @Index(...) })
Pergunta
When trying to use the @Index
annotation from javax.persistence
, Eclipse gives me this error.
I'm using it right before a java.util.Date
field, inside a class annotated with @Entity
.
Before, I was using org.hibernate.annotations.Index
in the exact same place and it was fine.
The problem started after I've upgraded hibernate-core from 4.1.9.Final to 4.3.0.Beta3 and hibernate-commons-annotations from 4.0.1 to 4.0.2. It says @Index
is deprecated and recommends the javax.persistence
one.
All docs and examples I've found put @Index
before class members. What am I missing?
Solução
The JPA Index annotation can only be used as part of another annotation like @Table
, @SecondaryTable
, etc. (see the See Also section in the javadoc):
@Table(indexes = { @Index(...) })
Outras dicas
use this:
@Table
.......,indexes = @Index(columnList = ("COLUMN_NAME"),name="CUSTOM NAME AT INDEX",unique=false)
......
If you use Eclipselink
you can add this import to your class:
import org.eclipse.persistence.annotations.Index;
Then add your @Index
to your field like this:
public class FooClass {
@Index
int field1;
}
or
@Index(columnNames = {"field1", "field2"})
public class FooClass {
int field1;
int field2;
}