sql - JPA @ManyToMany 连接表索引

标签 sql database hibernate optimization jpa

Hibernate 允许通过使用 @org.hibernate.annotations.Index@ManyToOne 映射上添加索引。

有没有办法在@ManyToMany 关系中指定连接表的索引?

如果实体 A 和实体 B 有一个 @ManyToMany 并且 A 是拥有方,连接表将有一个复合索引(a1,b1)。

我想知道这是否足够,或者我是否需要创建另一个索引 (b1, a1)?

最佳答案

在这里回答一个 6 年前的问题,但仍然相关。我在遇到同样的问题时遇到了这个问题。在网上搜索使得 JPA 似乎不支持连接表上的索引,但它支持,这是 documented here .

例如,当使用@JoinTable 时,您可以在注释上指定索引

@ManyToMany()
@JoinTable(name = "car_driver",
    joinColumns = @JoinColumn(name = "car_id"),
    inverseJoinColumns = @JoinColumn(name = "driver_id"),
    indexes = {
        @Index(name = "idx_car_driver_car_id", columnList = "car_id"),
        @Index(name = "idx_car_driver_driver_id", columnList = "driver_id")
    }
)
private Set<Driver> drivers;

关于sql - JPA @ManyToMany 连接表索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8406457/

相关文章:

java - 如何使用 Spring 异常处理 POST REST 正确的错误状态代码

java - 如何在我的 Spring WebFlow 项目中向这个 hibernate 调用添加排序

java - JPA的EntityManager是什么?

sql - 在针对 Oracle 编写良好的 SQL 时,您会给您的开发人员什么简单的指导方针?

php - 如何根据 php 中的数据库字段值对日期进行分组

c# - 在 sql 中,存储多个有序向量/列表的最佳方法是什么?

MYSQL SUM() 返回前 10 个值

mysql - 当列使用 utf8mb4_bin 排序规则时,如何执行不区分大小写的 MySQL 查询?

database - Couchbase 实现语言

java - 处理少量网络请求的正确方法