JPA实体使用索引提示(JPA Entity use index hint)

2019-10-16 14:04发布

是否可以指定一出戏框架实体查询数据库索引提示。

我的代码如下所示:

public static List<Transaction> findOnInactive(Date date) {
    return Transaction.find(
            "date = ? and account in ( select d.acctNb from account d "
                    + " where d.date = ? and (d.inactive = true or d.blocked = true)" 
                    + " group by d.acctNb )", date, date).fetch();
}

运行生成的查询需要20秒。 然而,随着手动运行相同的查询

选择用(INDEX(_dta_index_k1_1))从交易* ...

只需要1秒。 无论如何,我可以指定我的JPA查询索引提示?

Answer 1:

你需要使用原生SQL查询,像这样:

return JPA.em().createNativeQuery(
    "select * from transaction with (INDEX(_dta_index_k1_1)) ...",
    Transaction.class).getResultList();


文章来源: JPA Entity use index hint