Как указать порядок столбцов в многостолбцовом индексе в Hibernate? - PullRequest
3 голосов
/ 26 января 2011

Я создаю многостолбцовый индекс следующим образом:

@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;
}

Однако я не вижу, как управлять порядком появления трех столбцов в составном индексе (что может потребоватьсядля обеспечения оптимальной производительности запросов).Как этого достичь?

Ответы [ 2 ]

2 голосов
/ 19 июля 2012

Это можно указать с помощью аннотации 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;
}
0 голосов
/ 26 января 2011

Попробуйте использовать обозначение

@Entity
@Table(
    name="Ranking",
    indexes = { @Index(name="ranking_ix", columnNames = { "Rankable", "Criteria" } ) }
    )
public class Ranking extends Model {
    @ManyToOne
    public Rankable rankable;

    @ManyToOne
    public Criteria criteria;

    @Index(name = "ranking_ix")
    public double rank;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...