这是可能的,但您必须在没有 Spring Data 包装器的情况下直接应用 Criteria API。这是Vlad Mihalcea 文章中的一个示例。
CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<Post> criteria = builder.createQuery(Post.class);
Root<Post> fromPost = criteria.from(Post.class);
criteria.where(
builder.in(
fromPost.get("id")).value(Arrays.asList(1, 2, 3)
)
);
List<Post> posts = entityManager
.createQuery(criteria)
.setHint("hint_name", "hint_value")
.getResultList();
如果你确实想坚持 Spring Data Specification,你可以尝试使用@QueryHints
注解。
public interface RobotRepositoryRobot extends JpaRepository<Robot, Long>, JpaSpecificationExecutor<Robot> {
@Override
@QueryHints(
@QueryHint(name = "hint_name", value = "hint_value")
)
List<Robot> findAll(Specification<Robot> spec);
}
尽管在这种情况下,提示不是动态的。