具有函数

时间:2015-11-17 20:45:32

标签: java hibernate jpa

在我的Hibernate项目中,我添加如下索引:

@Entity
@Table(name="MY_TABLE", indexes = {
    @Index(name = "idx_user_name", columnList = "name"),
    @Index(name = "idx_user_email", columnList = "email")
})

哪种方法很好,但是当我想制作这样的索引时会发生什么:

CREATE INDEX ON my_table (lower(name)); 

如果我使用以下注释,我会得到AnnotationException

@Index(name = "idx_lower_name", columnList = "lower(name)")

我希望通过Hibernate + JPA 2.1制作索引来发布我的项目。是否可以通过索引注释应用函数?

或者我应该在部署时运行SQL脚本以通过SQL自己添加这些索引?

我可能只是格式化columnList错误,或者可能存在我缺少的文档中未描述的字段。

1 个答案:

答案 0 :(得分:6)

在JPA 2.1中无法使用基于函数的索引。

JPA提供了从特定数据库中抽象的方法。每个数据库都有自己的FBI实现,可以vary greatly。 因此,它不是标准的一部分。

我深入研究了Hibernate代码,看看FBI是否存在未记录的功能。不幸的是,只有基于列的索引是supported

您应该在部署时运行SQL脚本来创建索引。