当前位置: 首页 > 面试题库 >

JPA 2.1具有功能的列的索引注释

黄隐水
2023-03-14
问题内容

在我的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错误,或者可能是我缺少的文档中未描述的字段。


问题答案:

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

JPA提供了从特定数据库进行抽象的方法。每个数据库都有自己的FBI实现,该实现可能会有很大差异。因此,它不是标准的一部分。

我偷看了Hibernate代码,以查看是否有FBI的未记录功能。不幸的是,仅支持基于列的索引。

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



 类似资料:
  • 问题内容: 我正在查看数据库中的一个表(我没有创建该表),我发现有两个完全相同的索引(我不知道为什么这样做)只是命名不同,这可以对桌子有负面影响吗? 拿这个例子表: 问题答案: 是的,它可以起作用。 当然,如果使用这两个索引,它们会占用磁盘和内存的额外空间。 但是,它们还会使查询优化器做更多的工作来计算每个SELECT期间每个索引的收益。您拥有的索引越多,需要比较的案例就越多。因此,消除真正的冗余

  • 问题内容: 我说有Python清单。我也有一个索引列表,例如。如何获取带有索引的元素的列表? 问题答案: 您可以使用 列表推导 来获取该列表: 这等效于: 输出: 注意: 请记住,这是用于访问特定索引中a元素的表示法。

  • 问题内容: 我有一个索引元组数组,我想用它从多维numpy数组中选取值, 理解只有在已知的情况下才有效。 有什么提示吗? 问题答案: 您可以将的转置版本转换为元组,然后为矢量化解决方案建立索引-

  • 问题内容: 在Swift中,转义的闭包参数用注释。在Objective- C中是否有任何等效项,以便将生成的Swift接口标记为? 问题答案: 是的,但是从您在问题中提出的建议来看是落后的。规则是,除非明确标记,否则Objective-C不可为空的块会 自动 转换为Swift作为函数。 __

  • 问题内容: 我在SQL Server 2008上看到一些奇怪的性能问题,其中包含具有空间索引的可为空的地理位置列。每个空值都存储为空间索引内的根节点。 例如,一个表中有5000000个地址,其中存储了4000000个坐标。 每次查询索引时,我都必须扫描每个根节点,这意味着我必须扫描1 000 001级0节点。(所有有效坐标的1个根节点+ 1M空值) 我找不到文档中提到的内容,也看不到为什么如果索引

  • 我有一个包含三列的玛丽亚DB 我的表: 此外,我有一个关于列的主键(BTREE) 该表有2.5亿行,每10秒添加20条新记录。表上的所有SELECTS都有一个WHERE子句,要么仅在上,要么在和上。 这在性能方面效果很好,但索引使用的磁盘空间甚至比表本身还要多(数据为2.2GB,索引为2.7GB)。这对我来说似乎有点傻,因为索引基本上是整个表,这意味着MariaDB基本上将所有数据翻了一番。 这张