Ответ 1
Аннотации индекса JPA могут использоваться только как часть другой аннотации, такой как @Table
, @SecondaryTable
и т.д. (см. раздел "Смотрите также" в Javadoc):
@Table(indexes = { @Index(...) })
При попытке использовать аннотацию @Index
от javax.persistence
Eclipse дает мне эту ошибку.
Я использую его непосредственно перед полем java.util.Date
внутри класса, аннотированного с помощью @Entity
.
Раньше я использовал org.hibernate.annotations.Index
в том же месте, и все было нормально.
Проблема началась после того, как я обновил hibernate-core с 4.1.9.Final до 4.3.0.Beta3 и hibernate-commons-annotations от 4.0.1 до 4.0.2. Он говорит, что @Index
устарел и рекомендует javax.persistence
один.
Все документы и примеры, которые я нашел, помещают @Index
перед членами класса. Что мне не хватает?
Аннотации индекса JPA могут использоваться только как часть другой аннотации, такой как @Table
, @SecondaryTable
и т.д. (см. раздел "Смотрите также" в Javadoc):
@Table(indexes = { @Index(...) })
Если вы используете Eclipselink
, вы можете добавить этот импорт в свой класс:
import org.eclipse.persistence.annotations.Index;
Затем добавьте @Index
в ваше поле:
public class FooClass {
@Index
int field1;
}
или
@Index(columnNames = {"field1", "field2"})
public class FooClass {
int field1;
int field2;
}
Смотрите здесь: https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#annotations-jpa-index
используйте это:
@Table
.......,indexes = @Index(columnList = ("COLUMN_NAME"),name="CUSTOM NAME AT INDEX",unique=false)
......