如何在Hibernate中使用Oracle查询提示 [英] How to use Oracle query hint in Hibernate

查看:116
本文介绍了如何在Hibernate中使用Oracle查询提示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在Hibernate中使用Oracle提示来调用强制索引,但是在Hibernate 3.6.10.Final中找不到任何合适的API.

I am trying to use Oracle hint in Hibernate to call force index, but didn't find any proper API in Hibernate 3.6.10.Final.

我以某种方式尝试了Hibernate标准中的预测:

I somehow tried with projections in Hibernate criteria:

proList.add(Projections.sqlProjection("/*+ INDEX_DESC(CONTACT_USER_FK_I) */", new String[]{}, new Type[]{}));
                proList.add(Projections.property("objectId"));
                criteria.setProjection(proList);
                return criteria.list();

但是我在下面遇到了异常:

But I am getting the exception below:

    EXCEPTION
Caused by: 8 SQL Error  (could not execute query; SQL [select /*+ INDEX_DESC(CONTACT_USER_FK_I) */, this_.CONTACT_ID as y0_ from R4GDEV01_MBW.CONTACT this_ w
here this_.USER_ID=? and this_.ADDRESS_BOOK_ID in (?) and this_.DELETION_DATE is null order by lower(this_.FIRSTNAME) asc]; nested exception is org.hibernate
.exception.SQLGrammarException: could not execute query)
        at com.fusionone.pml.dao.hibernate.AbstractDao.executeCallback(AbstractDao.java:391)
        at com.fusionone.pml.dao.hibernate.AbstractContactDao.searchContacts(AbstractContactDao.java:1019)
        at com.fusionone.nab.core.service.impl.MergeServiceImpl.getFilteredContactIds(MergeServiceImpl.java:154)
        ... 91 more

我发现投影在查询提示后附加了,.

I found out that the projection is appending a , after query hint.

在Hibernate 3.6.10标准或HQL中还有其他使用Oracle查询提示的方法吗?

Is there any other way to use Oracle query hint in Hibernate 3.6.10 criteria or in HQL?

谢谢

推荐答案

您应先搜索. 此处是一个简单的技巧要解决此问题,只需将提示转换转换为列:

You should try to search first. Here is a simple trick to solve this, just transform the hint into a column:

"/*+ INDEX_DESC(CONTACT_USER_FK_I) */ 1 as MYHINT"

这篇关于如何在Hibernate中使用Oracle查询提示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆