我需要在hibernate實體中添加索引。據我所知,可以使用@Index註釋來爲單獨的列指定索引,但我需要一個實體的幾個字段的索引。
我google了,發現jboss註釋@表,它允許做到這一點(通過規範)。但是(我不知道爲什麼)這個功能不起作用。可能是jboss版本低於必要的,或者我不明白如何使用此註釋,但是...複雜索引不會創建。
爲什麼索引不能創建?
版本的JBoss 4.2.3.GA
實體例如:
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;
}
}
Jboss時/休眠試圖創建表 「房子」,它拋出異常如下:
Reason: org.hibernate.AnnotationException: @org.hibernate.annotations.Table references an unknown table: house
順便說一句,你都應該爲接受(以下票打勾)標記的答案,如果他們適合你。 – Bozho 2010-02-02 09:34:05
@foobar - 你解決了你的問題嗎? – Bozho 2010-02-23 20:52:12
我希望通過使用SQL腳本手動創建索引。你的建議是正確的,但我想這就像用戶用作休眠方法的黑客。而且這種方法不可能有資格獲得另一個持久性提供者。這個問題已經解決了,但是在將來我想花更多的時間來實現如何以最好的方式來完成這項任務。我會在這裏寫下結果... 非常感謝。 – 2010-03-03 14:15:22