Spring Data JPA Hibernate @QueryHints

另一个实例: http://leobluewing.iteye.com/blog/2032396 ;

本文内容来源:https://blog.csdn.net/gavinchen1985/article/details/81841687

jpa官方:https://docs.spring.io/spring-data/jpa/docs/2.0.9.RELEASE/reference/html/#jpa.query-hints

先解释一下什么是Query Hint。参考Orcale官方文档。默认情况下,@NameQuery或@NameNativeQuery完全按照查询String指定的方式执行。使用@QueryHint注解指定供应商特定的JPA查询扩展,以提高查询性能和利用供应商的JPA持续性提供程序实现中的特定特性。

@QueryHing有两个属性,name和value。name指定提示名称,value指定提示的值。如下例:

@Entity
@NamedQuery(
name="findAllEmployees",
query="SELECT * FROM EMPLOYEE WHERE MGR=1"
hints={@QueryHint={name="toplink.refresh", value="true"}})
public class Employee implements Serializable {
    ...
}

使用 @QueryHint 批注自定义查询以利用由 TopLink Essentials 提供的供应商 JPA 扩展:在该示例中,提示确保在执行查询时始终刷新 TopLink 缓存。

在repository接口中通过@QueryHints注解使用JPA 查询提示。它提供了一组JPA @QueryHint注解外加一个布尔标识,默认禁止在分页时需要调用的计数查询上使用查询提示,如下例:

public interface UserRepository extends Repository<User, Long> {
 
  @QueryHints(value = { @QueryHint(name = "name", value = "value")},
              forCounting = false)
  Page<User> findByLastname(String lastname, Pageable pageable);
}
原文地址:https://www.cnblogs.com/hahajava/p/9799131.html