Comment définir l'indice de plusieurs colonnes en veille prolongée de l'entité?

Matin.

J'ai besoin d'ajouter de l'indexation en veille prolongée de l'entité. Comme je sais qu'il est possible de le faire à l'aide de @Index annotation pour spécifier l'index de colonne distincte, mais j'ai besoin d'un index de plusieurs champs de l'entité.

J'ai googlé et trouvé jboss l'annotation @Table, qui permet de le faire (par la spécification). Mais (je ne sais pas pourquoi), cette fonctionnalité ne fonctionne pas. Peut-être jboss version est plus faible que nécessaire, ou peut-être que je ne pas comprendre comment utiliser cette annotation, mais... complexe de l'indice n'est pas créé.

Pourquoi indice ne peut pas être créé?

jboss version 4.2.3.GA

Exemple d'entité:

package somepackage;
import org.hibernate.annotations.Index;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@org.hibernate.annotations.Table(appliesTo = House.TABLE_NAME,
indexes = {
@Index(name = "IDX_XDN_DFN",
columnNames = {House.XDN, House.DFN}
)
}
)
public class House {
public final static String TABLE_NAME = "house";
public final static String XDN = "xdn";
public final static String DFN = "dfn";
@Id
@GeneratedValue
private long Id;
@Column(name = XDN)
private long xdn;
@Column(name = DFN)
private long dfn;
@Column
private String address;
public long getId() {
return Id;
}
public void setId(long id) {
this.Id = id;
}
public long getXdn() {
return xdn;
}
public void setXdn(long xdn) {
this.xdn = xdn;
}
public long getDfn() {
return dfn;
}
public void setDfn(long dfn) {
this.dfn = dfn;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}

Quand jboss/hibernate essaie de créer la table "maison" il jette exception suivante:

Reason: org.hibernate.AnnotationException: @org.hibernate.annotations.Table references an unknown table: house
  • btw, vous êtes censé marquer des réponses comme acceptée (la tique au-dessous de la voix), si ils vous conviennent.
  • l'avez-vous résolu votre problème?
  • J'ai desided de créer des index manuellement à l'aide de scripts SQL. Votre suggestsion est correct, mais je suppose que c'est comme un hack pour les utilisateurs de l'utiliser comme hibernate approche. Et cette méthode ne peut pas être admissibles à un autre fournisseur de persistance. Le problème est résolu, mais dans l'avenir, je souhaite de passer un peu plus de temps à réaliser comment faire cette tâche de la meilleure façon. Je vais écrire sur la suite ici... Merci beaucoup.
  • regarde @Pascal Thivent réponse: il montre qu'une annotation est manquant dans votre cartographie. (à partir du document de référence: Cette annotation [@org.mise en veille prolongée.les annotations.Table] est prévu où @javax.la persistance.Le tableau se produit).
InformationsquelleAutor Zaur_M | 2010-02-02