Java @Enumerated field上的Hibernate@Index不';行不通
我正在使用Hibernate与数据库通信。我有一个字段是枚举,它将用于慢速查询。所以我想给它编索引。我在字段中添加了以下注释: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
@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;
}
}