Mañana.¿Cómo se define el índice por varias columnas en la entidad de hibernación?
Necesito agregar indexación en la entidad de hibernación. Como sé, es posible hacerlo usando la anotación @Index para especificar el índice para una columna separada, pero necesito un índice para varios campos de entidad.
He buscado en Google y he encontrado la anotación jboss @Table, que permite hacer esto (por especificación). Pero (no sé por qué) esta funcionalidad no funciona. Puede ser la versión de jboss más baja de lo necesario, o tal vez no entiendo cómo usar esta anotación, pero ... no se crea un índice complejo.
¿Por qué no se puede crear el índice?
versión de JBoss 4.2.3.GA
Entidad ejemplo:
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;
}
}
Cuando jboss/hibernación intenta crear la "casa" de mesa que arroja siguiente excepción:
Reason: org.hibernate.AnnotationException: @org.hibernate.annotations.Table references an unknown table: house
por cierto, se supone que para marcar respuestas aceptadas (la garrapata por debajo de los votos), si le conviene. – Bozho
@foobar: ¿resolvió su problema? – Bozho
He deseado crear índices manualmente mediante scripts SQL. Su sugerencia es correcta, pero supongo que es como un truco que los usuarios utilizan como un enfoque de hibernación. Y este método no puede ser elegible para otro proveedor de persistencia. El problema está resuelto, pero en el futuro quiero dedicarle un poco más de tiempo para darme cuenta de cómo hacer esta tarea de la mejor manera. Voy a escribir sobre el resultado aquí ... Muchas gracias. –