Аннотация @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-annotation с 4.0.1 до 4.0.2. Он говорит, что @Index устарел, и рекомендует javax.persistence.

Все документы и примеры, которые я нашел, ставят @Index перед членами класса. Что мне не хватает?


person Vituel    schedule 12.07.2013    source источник


Ответы (3)


Аннотацию JPA Index можно использовать только как часть другой аннотации, такой как @Table, @SecondaryTable и т. Д. (См. Также раздел в javadoc):

@Table(indexes = { @Index(...) })
person JB Nizet    schedule 12.07.2013

См. Здесь: 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)
......
person Community    schedule 19.10.2017

Если вы используете Eclipselink, вы можете добавить этот импорт в свой класс:

import org.eclipse.persistence.annotations.Index;

Затем добавьте свой @Index в свое поле следующим образом:

public class FooClass {
   @Index
   int field1;
}

or

@Index(columnNames = {"field1", "field2"})
public class FooClass {       
   int field1;
   int field2;
}
person Joe Almore    schedule 26.04.2014
comment
Думаю, речь идет об аннотации JPA 2.1 @Index, а не о проприетарной аннотации. - person Piohen; 08.10.2014