java - JPA:通过外键引用的表的另一个字段进行索引

标签 java jpa playframework

我通过 Play Framework 使用 JPA 和 Mysql。

假设我有一个 JQL 查询,如下所示:

SELECT p FROM Person p WHERE p.address.city = 'New York'

地址字段是地址表的外键引用。

我的理解是,这个查询需要对整个 Person 表进行表扫描,“取消引用”“地址”字段,然后对 Address 表进行扫描。即使 Address 对象上的城市字段已建立索引,我们仍在查看整个 Person 表的扫描。

我想通过以某种方式在 Person 表中的 p.address.city 上创建索引来加快此查询,这在 JPA/MySql 中可能吗?

最佳答案

我相信是这样,如果你使用 Hibernate,你可以使用他们的注释

 @org.hibernate.annotations.Table(
     name="table_name",
     indexes = { @Index(name="idx_", columnNames = { "xxx", "xx" } ) }
     )

@Index 在来自 org.hibernate.annotations 包的列中进行注释(放置在模型中)

希望这有帮助

关于java - JPA:通过外键引用的表的另一个字段进行索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4891754/

相关文章:

java - 阻止线程执行某些方法

java - 使用 eclipse 和 axis 2 生成第一个 Web 服务客户端时出现问题

java - JPA跨单向OneToOne

java - JPA/Hibernate Spring @Transactional 与 JOIN FETCH

playframework - 如何自动测试 playframework 的演变

java - 如何制作不会静默失败的可运行 Jar 程序?

引用另一个 Java 项目的 Java Web 项目

java - JPA 实体映射 - 链接同一个实体

java - Play Framework 2.3.x 外部资源/上传文件夹

postgresql - Scala Play "Can' t 解析符号 db"