我正在使用Hibernate 4.3.7 / jpa 2,我注意到来自hibernate 4.3 我可以将Oracle查询提示嵌入到hibernate查询中抛出addQueryHint,我试图使用api和hql这两个标准修复它,但不幸的是它对我不起作用!!
有没有办法改变这种方式?这是我的代码
public ListgetAll(){
Session session = em.unwrap(org.hibernate.Session.class);
Criteria criteria = session.createCriteria(Person.class).add(Restrictions.like("surname", "H%"));
criteria.addQueryHint("ALL_ROWS");
return criteria.list();
}
任何回复都将受到高度赞赏
谢谢
答案 0 :(得分:2)
我对addQueryHint没有任何好运。根据文档,它应该通过提示,但当我看到SQL发送它不存在。我注意到这个功能的测试是使用Oracle方言,我们使用的是SQL Server,所以我认为它可能没有在SQL Server中实现,但我看到你有这个Oracle中的问题。
以下是文档中的说明:
向SQL添加数据库查询提示。这些与JPA的QueryHint不同,后者特定于JPA实现,并忽略了DB供应商特定的提示。相反,这些仅用于特定于供应商的提示,例如Oracle的优化程序。支持多个查询提示;方言将决定连接和放置。
无论如何,我发现了一个非常糟糕的黑客/解决方法,但我很乐意看到addQueryHint已修复。
.add(Restrictions.sqlRestriction("1=1 ADD_YOUR_HINT_HERE")))