早上.
我需要在hibernate实体中添加索引.据我所知,可以使用@Index注释来指定单独列的索引,但我需要一个实体的几个字段的索引.
我用谷歌搜索并找到了jboss注释@Table,它允许这样做(按照规范).但是(我不知道为什么)这个功能不起作用.可能是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 / hibernate尝试创建表“house”时,它抛出以下异常:
- Reason: org.hibernate.AnnotationException: @org.hibernate.annotations.Table references an unknown table: house