web-dev-qa-db-fra.com

L'annotation @Index n'est pas autorisée pour cet emplacement.

En essayant d'utiliser l'annotation @Index à partir de javax.persistence, Eclipse me donne cette erreur.

Je l'utilise juste avant un champ Java.util.Date, dans une classe annotée avec @Entity.

Avant, j’utilisais org.hibernate.annotations.Index exactement au même endroit et c’était bien.

Le problème a commencé après la mise à niveau de hibernate-core de 4.1.9.Final à 4.3.0.Beta3 et hibernate-commons-annotation s à partir de 4.0 .1 à 4.0.2 . Il dit que @Index est obsolète et recommande le javax.persistence.

Tous les documents et exemples que j'ai trouvés ont mis @Index avant les membres de la classe. Qu'est-ce que je rate?

25
Vituel

L'annotation d'index JPA ne peut être utilisée que dans le cadre d'une autre annotation telle que @Table, @SecondaryTable, etc. (voir la section Voir aussi dans le javadoc ):

@Table(indexes = { @Index(...) })
38
JB Nizet

Voir ici https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#annotations-jpa-index

utilisez ceci:

@Table 
.......,indexes = @Index(columnList = ("COLUMN_NAME"),name="CUSTOM NAME AT INDEX",unique=false)
......
0
user4107406