2013-07-12 3 views
24

При попытке использовать аннотацию @Index от javax.persistence Eclipse дает мне эту ошибку.Аннотации @Index запрещены для этого местоположения

Я использую его непосредственно перед полем java.util.Date, внутри класса, аннотированного @Entity.

До этого, я использовал org.hibernate.annotations.Index в том же месте, и все было хорошо.

Проблема началась после того, как я модернизировал гибернации-ядро от 4.1.9.Final к 4.3.0.Beta3 и Hibernate-достоянию-аннотаций з от 4.0.1 к 4.0.2. В нем указано, что @Index устарел и рекомендует использовать javax.persistence.

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

ответ

36

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

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

Если вы используете 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; 
} 
+1

Я думаю, речь идет о JPA 2.1 @Index аннотации, не патентованные один. – Piohen

Смежные вопросы