How to define index by several columns in hibernate entity?
        Posted  
        
            by foobar
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by foobar
        
        
        
        Published on 2010-02-02T09:26:49Z
        Indexed on 
            2010/05/01
            0:47 UTC
        
        
        Read the original article
        Hit count: 422
        
Morning.
I need to add indexing in hibernate entity. As I know it is possible to do using @Index annotation to specify index for separate column but I need an index for several fields of entity.
I've googled and found jboss annotation @Table, that allows to do this (by specification). But (I don't know why) this functionality doesn't work. May be jboss version is lower than necessary, or maybe I don't understant how to use this annotation, but... complex index is not created.
Why index may not be created?
jboss version 4.2.3.GA
Entity example:
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;
    }
}
When jboss/hibernate tries to create table "house" it throws following exception:
Reason: org.hibernate.AnnotationException: @org.hibernate.annotations.Table references an unknown table: house
© Stack Overflow or respective owner