java - 如何在 Hibernate 的多列索引中指定列的顺序?

标签 java hibernate jpa

我正在创建一个多列索引,如下所示:

@Entity
public class Ranking extends Model {
    @ManyToOne
    @Index(name = "ranking_ix")
    public Rankable rankable;

    @ManyToOne
    @Index(name = "ranking_ix")
    public Criteria criteria;

    @Index(name = "ranking_ix")
    public double rank;
}

但是我看不到如何控制三列在复合索引中的出现顺序(这可能是确保最佳查询性能所必需的)。如何实现?

最佳答案

这可以用 org.hibernate.annotations.Table 注释指定,​​除了 javax.persistence.Table 注释外还使用它:

@Entity
@javax.persistence.Table(name="Ranking")
@org.hibernate.annotations.Table(
    appliesTo="Ranking",
    indexes = { @Index(name="ranking_ix", columnNames = { "rankable", "criteria", "rank" } ) }
)
public class Ranking extends Model {
    @ManyToOne
    public Rankable rankable;

    @ManyToOne
    public Criteria criteria;

    @Index(name = "ranking_ix")
    public double rank;
}

关于java - 如何在 Hibernate 的多列索引中指定列的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4800499/

相关文章:

java - 使用hibernate读取300万条记录

java - 带有 war 文件的 Spring 应用程序属性配置文件

java - 了解 Swing 中的绘画

mysql - 向自引用父/子添加一对多关系

hibernate - 如何编写一个 JPA 查询来检查一个集合是否在另一个集合中至少有一个项目?

java - Switch 语句和 double 值

java - 非法参数异常 : Type cannot be null

hibernate - 每个请求或每个用户的 Hibernate session 数?

java - Spring Boot应用程序中JPAentityManager如何选择连接池?

java - JPA,重用已删除的 ID