Patch to support Oracle Hints in Hibernate queries

Description

Supporting Oracle hints in Hibernate is a feature often requested by Hibernate users, though I'll admit should be used very rarely in practice. Actually, I had a manager that demanded it if we were to continue using Hibernate (He was new to the project with a C++/DBA background.), so I modified Hibernate to support it. I did this originally 2 years ago against Hibernate version 3.3.1. I've just updated it to support Hibernate version 3.6.2.

It would be great if this could be included in the Hibernate baseline. It's a relatively minor change and the design follows existing Hibernate patterns.

Thanks,
Tad

General Design:
========================
I modeled the implementation after the org.hibernate.dialect.Dialect.getLimitString() method. I added a new method to the org.hibernate.dialect.Dialect class called getQueryHintString(). I also modified the org.hibernate.Criteria and org.hibernate.Query interfaces to add a new method called setQueryHint(). This means you can create a Query from an HQL string and then apply the Oracle hint.

Other Dialect class implementation would easy override the getQueryHintString() method to support hints for other databases.

What's included in the patch:
===============================
I've included the 9 classes that were modified to support Oracle hints. I've also included a Maven POM file that should be able to generate the patch jar automatically and upload it to your Maven Repository. Just change the artifactId from "hibernate-core" to "hibernate-core--OracleHintsPatch". (I'm relatively new to Maven and this has not received much testing, so feel free to improve upon it.)

Attachments

3
  • 15 Apr 2011, 06:58 PM
  • 15 Apr 2011, 06:50 PM
  • 15 Apr 2011, 01:42 AM

Activity

Brett MeyerJuly 10, 2013 at 3:57 AM

Closing this one in favor of https://hibernate.atlassian.net/browse/HHH-2736#icft=HHH-2736 (many more watchers and votes). , thank you for the patch – I'll be using it as the bulk of the fix.

RajaSeptember 8, 2011 at 5:35 AM

This patch doesn't work if we have hql written with an alias name to the entity class because when applying the oracle hint it should use the same alias name mentioned in the SQL.

Strong LiuAugust 24, 2011 at 6:30 AM

Patrick DecatAugust 23, 2011 at 7:15 PM

I've converted the attached patch as a GitHub pull request against 3.6 branch : https://github.com/hibernate/hibernate-core/pull/160

Tad SmithApril 15, 2011 at 6:58 PM

FIXED my 3.6.3 patch file. The previous attachment is missing a file, please use this one instead.

Duplicate

Details

Assignee

Reporter

Components

Priority

Created April 15, 2011 at 1:42 AM
Updated July 8, 2014 at 3:01 PM
Resolved July 10, 2013 at 3:57 AM

Flag notifications