Java @Enumerated field上的Hibernate@Index不';行不通

Java @Enumerated field上的Hibernate@Index不';行不通,java,hibernate,orm,indexing,Java,Hibernate,Orm,Indexing,我正在使用Hibernate与数据库通信。我有一个字段是枚举,它将用于慢速查询。所以我想给它编索引。我在字段中添加了以下注释: @Column(name="RIGHT_TYPE", unique=false, nullable=false, length=10) @Enumerated(EnumType.STRING) @Index(name = "ABC_INDEX") protected RightType rightType; 但是,我没有看到在该字段上创建任何索引 我使用的是org.h

我正在使用Hibernate与数据库通信。我有一个字段是枚举,它将用于慢速查询。所以我想给它编索引。我在字段中添加了以下注释:

@Column(name="RIGHT_TYPE", unique=false, nullable=false, length=10)
@Enumerated(EnumType.STRING)
@Index(name = "ABC_INDEX")
protected RightType rightType;
但是,我没有看到在该字段上创建任何索引

我使用的是
org.hibernate.dialogue.oracle9dialogue
。(精简后的)ddl是:


但如果我愿意,我可以手动创建一个。为什么呢?有没有办法强制Hibernate使其发生?

我对以下实体进行了测试:

@Entity
public class EntityWithIndices {
    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "GENDER_TYPE", unique = false, nullable = false, length = 10)
    @Enumerated(EnumType.STRING)
    @Index(name = "ABC_INDEX")
    protected GenderType genderType;

    // getter and setters
} 
使用以下枚举:

public enum GenderType {
    FEMALE("0"), MALE("1");

    private final String genderCode;

    public String getCode() {
        return this.genderCode;
    }

    private GenderType(String code) {
        this.genderCode = code;
    }
}

使用Hibernate Annotations 3.4.0.GA、MySQL 5.1作为数据库,生成索引。但我不能尝试使用Oracle。我做了一个项目(z-Hibernate注释,任何问题类型,在“索引”上),但找不到Hibernate注释最新版本的任何问题(这并不意味着没有问题)。如果您创建了一个问题,请尝试提供一个简单的可运行测试用例和SchemaExport日志,这将大大增加您修复该问题的机会。

这似乎与您在问题中遇到的一样有效。我创建了一个小程序来演示如何在独立应用程序中工作

我将要做的一件事是,hibernate不会在更新操作期间尝试创建索引。它将从头开始创建它们,但不会在更新期间创建。hibernate团队对此报告为bug的标准响应是“hbm2ddl仅用于开发,因此不需要索引,您应该获得DBA


我个人的建议是,如果这是一个问题,就开始用它来管理创建索引之类的东西。

你的方言是什么?您能显示生成的DDL吗?在entryLooks中添加了请求的信息,就像一个bug一样。将一个问题提交到更改为创建,现在索引就在那里!
public enum GenderType {
    FEMALE("0"), MALE("1");

    private final String genderCode;

    public String getCode() {
        return this.genderCode;
    }

    private GenderType(String code) {
        this.genderCode = code;
    }
}