Hibernate: Créer un index

Je veux créer plusieurs Index dans ma DB. Malheureusement, nous devons modifier le fournisseur de persistance de EclipseLink mise en veille prolongée, mais pas non plus la solution avec javax.la persistance.Indice ni la solution avec mise en veille prolongée fonctionne.

C'est ce que la classe ressemble à:

@Entity
@Table(name = "my_shop")
public class Shop extends BaseEntity {

    @Temporal(TemporalType.TIMESTAMP)
    @Column(nullable = false)
    private Calendar lastUpdate;
}

Ce devrait être la solution avec javax.la persistance.*:

import javax.persistence.Index;
import javax.persistence.Table;

@Table(name = "my_shop",
        indexes = @Index(columnList = "lastupdate")
)

Hibernate annotations sont obsolètes, donc il doit y avoir une raison de ne pas utiliser ces annotations:

import org.hibernate.annotations.Index; //deprecated
import org.hibernate.annotations.Table;

@Table(...,
        indexes = @Index(columnNames = "lastupdate")
)

- Je utiliser Glassfish 3.1.2.2, PostgreSQL 9.1, JPA 2.1 et hibernate-core 4.3.4.Final. Si je regarde dans la base de données, il n'y a pas d'index créé sur le domaine spécifique via psql "\d+".

Ce que mon persistence.xml ressemble:

...
    <property name="hibernate.hbm2ddl.auto" value="create"/>
    <property name="dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
...

Seulement EclipseLink pouvez gérer cela facilement:

import org.eclipse.persistence.annotations.Index;

@Entity
@Table(name = "my_shop")
public class Shop extends BaseEntity {

    @Index
    @Temporal(TemporalType.TIMESTAMP)
    @Column(nullable = false)
    private Calendar lastUpdate;
}

J'ai testé les solutions proposées comme avec toutes les combinaisons "lastupdate", "lastUpdate" et d'autres "nom" attributs dans la Colonne @et @Index, mais rien ne semble fonctionner.

Espère que quelqu'un pourra m'aider,
cheers!

Mise à jour de 1

Réservoir à vous pour votre aide!
En effet, cette solution fonctionne:

@javax.persistence.Table(name = "my_shop")
@Table(appliesTo = "my_shop"
        ,indexes = {@Index(columnNames = "name", name = "name"),
                @Index(columnNames = "lastupdate", name = "lastupdate")}
)

Mais encore org.hibernate.annotations.Index; est marqué comme obsolète. Ainsi en est-il de bonne pratique de l'utiliser ou pas? Si non quelle est l'alternative car apparemment javax.persistence.Index ne fonctionne pas.

org.hibernate.annotations.Index; fonctionne avec toutes les valeurs: créer, mettre à jour, ...
javax.persistence.Index n'est pas question que la valeur "mise en veille prolongée.hbm2ddl.auto" a ne fonctionne pas.

source d'informationauteur Rooky